用java怎么实现QQ登录界面?

Python011

用java怎么实现QQ登录界面?,第1张

用java做QQ登录界面的写法如下:

package ch10

import java.awt.*

import java.awt.event.*

import javax.swing.*

1、//定义该类继承自JFrame,实现ActionListener接口

public class LoginTest extends JFrame implements ActionListener

{

2、//创建JPanel对象

private JPanel jp=new JPanel()

3、//创建3个标并加入数组

JLabel name = new JLabel("请输入用户名")

JLabel password = new JLabel("请输入密码")

JLabel show = new JLabel("")

private JLabel[] jl={name,password,show}

4、//创建登陆和重置按扭并加入数组

JButton login = new JButton("登陆")

JButton reset = new JButton("重置")

private JButton[] jb={login,reset}

5、//创建文本框以及密码框

private JTextField jName=new JTextField()

private JPasswordField jPassword =new JPasswordField()

public LoginTest()

{

6、//设置布局管理器为空布局,这里自己摆放按钮、标签和文本框

jp.setLayout(null)

for(int i=0i<2i++)

{

7、//设置标签和按扭的位置与大小

jl[i].setBounds(30,20+40*i,180,20)

jb[i].setBounds(30+110*i,100,80,20)

8、//添加标签和按扭到JPanel容器中

jp.add(jl[i])

jp.add(jb[i])

//为2个按钮注册动作事件监听器

jb[i].addActionListener(this)

}

9、//设置文本框的位置和大小,注意满足美观并足够用户名的长度

jName.setBounds(130,15,100,20)

10、//添加文本框到JPanel容器中

jp.add(jName)

11、//为文本框注册动作事件监听器

jName.addActionListener(this)

12、//设置密码框的位置和大小,注意满足美观和足够密码的长度

jPassword.setBounds(130,60,100,20)

13、//添加密码框到JPanel容器中

jp.add(jPassword)

14、//设置密码框中的回显字符,这里设置美元符号

jPassword.setEchoChar('$')

15、//为密码框注册动作事件监听器

jPassword.addActionListener(this)

16、//设置用于显示登陆状态的标签大小位置,并将其添加进JPanel容器

jl[2].setBounds(10,180,270,20)

jp.add(jl[2])

17、//添加JPanel容器到窗体中

this.add(jp)

18、//设置窗体的标题、位置、大小、可见性及关闭动作

this.setTitle("登陆窗口")

this.setBounds(200,200,270,250)

this.setVisible(true)

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

}

19、//实现动作监听器接口中的方法actionPerformed

public void actionPerformed(ActionEvent e)

{

20、//如果事件源为文本框

if(e.getSource()==jName)

{

21、//切换输入焦点到密码框

jPassword.requestFocus()

}

22、//如果事件源为重置按扭

else if(e.getSource()==jb[1])

{

23、//清空姓名文本框、密码框和show标签中的所有信息

jl[2].setText("")

jName.setText("")

jPassword.setText("")

24、//让输入焦点回到文本框

jName.requestFocus()

}

25、//如果事件源为登陆按钮,则判断登录名和密码是否正确

else

{

26、//判断用户名和密码是否匹配

if(jName.getText().equals("lixiangguo")&&

String.valueOf(jPassword.getPassword()).equals("19801001"))

{

27、jl[2].setText("登陆成功,欢迎您的到来!")

}

else

{

28、jl[2].setText("对不起,您的用户名或密码错误!")

}

}

}

public static void main(String[] args)

{

29、//创建LoginTest窗体对象

new LoginTest()

}

}

方法/步骤

准备工作

在正式接入之前你需要了解以下名词的含义:

1. appid :应用的唯一标识。在OAuth2.0认证过程中,appid的值即为oauth_consumer_key的值。

2. appkey:appid对应的密钥,访问用户资源时用来验证应用的合法性。在OAuth2.0认证过程中,appkey的值即为oauth_consumer_secret的值。

3. redirecturl:成功授权后的回调地址,必须是注册appid时填写的主域名下的地址,建议设置为网站首页或网站的用户中心。注意需要将url进行URLEncode。

4. access token:用来判断用户在本网站上的登录状态,具有3个月有效期,用户再次登录时自动刷新。

5. openid:是此网站上唯一对应用户身份的标识,网站可将此ID进行存储便于用户下次登录时辨识其身份,或将其与用户在网站上的原有帐号进行绑定。

第一步

要接入QQ登录,必不可少的是appid和appkey,通过申请接入QQ登录,按照相应步骤操作即可轻松获得,在此不做赘述。

第二步

在需要放置QQ登录按钮的页面加入下面SCRIPT代码:

<script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js" data-appid="APPID" data-redirecturi="REDIRECTURI" charset="utf-8"></script>

PS:APPID 和 REDIRECTURI 换成第一步申请所得到的对应内容,REDIRECTURI 就是登录之后返回的回调地址,在申请页面自己填写,一般写网站主域名即可。注意:回调地址必须以http或https开头。

第三步

在页面放置一个元素节点用来展现登录按钮,并且指定其ID,如:

<div id="qq"></div>

然后在页面加入如下SCRIPT:

<script type="text/javascript">

QC.Login({

btnId:"qq"    //插入按钮的节点id

})

</script>

这时就可以在页面看到如下效果:

如对这个展示效果不满意,也可以自定义登录按钮。

第四步

在  REDIRECTURI 即回调地址页面加入如下SCRIPT:

<script type="text/javascript"

src="http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js" charset="utf-8" data-callback="true"></script>

另外:官方说法如果回调地址页与加入QQ登录按钮是同一个页面,则只需要引用一次脚本文件。如果理解不了这种官方说法,可以在第一步的脚本中加入data-callback="true"属性,而忽略第四步,前提是回调地址页与加入QQ登录按钮的页面是同一个页面。

第五步

因为JS SDK封装了获取Access Token以及OpenID的方法,因此开发者不需要用开发代码进行获取,直接调用QQ登录OpenAPI即可。

调用OpenAPI时,请统一遵循下述调用方式:

QC.api(api, paras, fmt, method)

参数说明:

最后

提供一种代码接入思路,仅供参考:

QC.api("get_user_info", {}) //get_user_info是API参数

//指定接口访问成功的接收函数,s为成功返回Response对象

     .success(function (s) {

         //成功回调,通过s.data获取OpenAPI的返回数据

         nick = s.data.nickname//获得昵称

         headurl = s.data.figureurl_qq_1//获得头像

         if (QC.Login.check()) {//判断是否登录

             QC.Login.getMe(function (openId, accessToken) { //这里可以得到openId和accessToken

                 //下面可以调用自己的保存方法

                 ……

             })

         }

     })

//指定接口访问失败的接收函数,f为失败返回Response对象

     .error(function (f) {

         //失败回调

         alert("获取用户信息失败!")

     })

 ////指定接口完成请求后的接收函数,c为完成请求返回Response对象

 //.complete(function (c) {

 //    //完成请求回调

 //    alert("获取用户信息完成!")

 //})