微信,微博,QQ,这是如今目前用的最多的手机 APP,咱们作产品哪能不跟他们不沾边,对于登陆,我想谁也不想要多少个账号密码,根本记不住!java
为了增长用户体验,用户可以快速的注册登陆,第三方帐号进行登陆注册的的需求也就由此而诞生数据库
一、微信api
1) 微信登陆也是最坑人的,须要花300大洋成为开发者帐户,没办法谁让微信用户群体大呢因此也就只好认了;而后登陆网站后台须要建立网站应用,填写受权回调域(登陆网站的域名)只填写域名便可浏览器
申请地址: https://open.weixin.qq.com/cgi-bin/index?t=home/index&lang=zh_CN微信
2)查看微信提供的接口,写java代码cookie
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
public
void
wx() {
try
{
+ ShareLoginDict.WEIXINKEY.getState()
+
"&redirect_uri="
+ URLEncoder.encode(ShareLoginDict.WEIXINURL.getState())
+
"&response_type=code&scope=snsapi_login&state=66666#wechat_redirect"
);
}
catch
(IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public
Result userwx(String return_code) {
Result result =
new
Result();
Map<String, Object> token = (Map<String, Object>) WeiXinAPI
.getToken(return_code);
if
(token !=
null
&& token.get(
"access_token"
) !=
null
) {
Map<String, Object> user = (Map<String, Object>) WeiXinAPI
.getWxUser(token.get(
"access_token"
).toString(),
token.get(
"openid"
).toString());
if
(user !=
null
) {
result.addModel(
"openid"
, user.get(
"openid"
));
result.addModel(
"nickname"
, user.get(
"nickname"
));
result.addModel(
"headimgurl"
, user.get(
"headimgurl"
));
result.addModel(
"data"
,
"data_success"
);
}
else
{
result.addModel(
"data"
,
"data_null"
);
}
}
else
{
result.addModel(
"data"
,
"data_null"
);
}
return
result;
}
|
当用户经过微信登陆时,调用微信接口获取用户接口返回微信端的openid,昵称,头像;而后将此信息存入到浏览器的cookie中,当用户浏览其余信息时,辨别若是是用户是用微信登陆的,拦截器直接从cookie中获取用户的信息显示昵称和头像,并同时判断该openid是否和数据库中用户作绑定,若是没有绑定提示用户注册。app
二、qq登陆ide
1)qq互联建立应用网站
接入QQ登陆前,网站需首先进行申请,得到对应的appid与appkey,以保证后续流程中可正确对网站与用户进行验证与受权。ui
申请appid和appkey的用途
appid :应用的惟一标识。在OAuth2.0认证过程当中,appid的值即为oauth_consumer_key的值。
appkey:appid对应的密钥,访问用户资源时用来验证应用的合法性。在OAuth2.0认证过程当中,appkey的值即为oauth_consumer_secret的值。
申请地址: http://connect.qq.com/intro/login/
2)查看QQ提供的接口,写java代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
public
void
qq() {
try
{
+ ShareLoginDict.QQKEY.getState()
+
"&redirect_uri="
+ ShareLoginDict.QQURL.getState() +
"&scope=get_user_info"
);
}
catch
(IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public
Result userqq(String return_code) {
Result result =
new
Result();
Map<String, Object> token = (Map<String, Object>) QQAPI
.getToken(return_code);
if
(token !=
null
&& token.get(
"access_token"
) !=
null
) {
Map<String, Object> tokenme = (Map<String, Object>) QQAPI
.getTokenMeOpenId(token.get(
"access_token"
).toString());
if
(tokenme !=
null
&& tokenme.get(
"openid"
) !=
null
) {
Map<String, Object> user = (Map<String, Object>) QQAPI
.getQqUser(token.get(
"access_token"
).toString(),
tokenme.get(
"openid"
).toString());
if
(user !=
null
) {
result.addModel(
"openid"
, tokenme.get(
"openid"
));
result.addModel(
"nickname"
, user.get(
"nickname"
));
result.addModel(
"figureurl"
, user.get(
"figureurl"
));
result.addModel(
"data"
,
"data_success"
);
}
else
{
result.addModel(
"data"
,
"data_null"
);
}
}
else
{
result.addModel(
"data"
,
"data_null"
);
}
}
else
{
result.addModel(
"data"
,
"data_null"
);
}
return
result;
}
|
当用户经过QQ登陆时,调用QQ接口获取用户接口返回QQ端的openid,昵称,头像;而后将此信息存入到浏览器的cookie中,当用户浏览其余信息时,辨别若是是用户是用微信登陆的,拦截器直接从cookie中获取用户的信息显示昵称和头像,并同时判断该openid是否和数据库中用户作绑定,若是没有绑定提示用户注册。
3 微博登陆
1)微博建立应用
申请地址:http://open.weibo.com/authentication
2)查看微博提供的接口,写java代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
public
void
wb() {
try
{
+ ShareLoginDict.WEIBOKEY.getState()
+
"&redirect_uri="
+ ShareLoginDict.WEIBOURL.getState()
+
"&response_type=code"
);
}
catch
(IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public
Result userwb(String return_url, String return_code) {
Result result =
new
Result();
Map<String, Object> token = (Map<String, Object>) WeiBoAPI.getToken(
return_url, return_code);
if
(token !=
null
&& token.get(
"access_token"
) !=
null
) {
Map<String, Object> user = (Map<String, Object>) WeiBoAPI
.getWbUser(token.get(
"access_token"
).toString(),
token.get(
"uid"
).toString());
if
(user !=
null
) {
result.addModel(
"name"
, user.get(
"screen_name"
));
result.addModel(
"pic"
, user.get(
"avatar_large"
));
result.addModel(
"idstr"
, user.get(
"idstr"
));
result.addModel(
"data"
,
"data_success"
);
}
else
{
result.addModel(
"data"
,
"data_null"
);
}
}
else
{
result.addModel(
"data"
,
"data_null"
);
}
return
result;
}
|
当用户经过微博登陆时,调用微博接口获取用户接口返回微博端的idstr,昵称,头像;而后将此信息存入到浏览器的cookie中,当用户浏览其余信息时,辨别若是是用户是用微信登陆的,拦截器直接从cookie中获取用户的信息显示昵称和头像,并同时判断该openid是否和数据库中用户作绑定,若是没有绑定提示用户注册。
感谢阅读,但愿能帮助到你们,谢谢你们对本站的支持!