Java实现QQ、微信、新浪微博第三方登录

   对于大多数的网站、APP都有第三方登录这个功能,自己也做过几次,最近做的passport项目又用到了第三方登录,所以特意总结了一下关于第三方登录的实现,并拿出来与大家一同分享:

三个开放平台注册账户获取AppKey和AppSecret

QQ互联地址:https://connect.qq.com/intro/login

微信开放平台地址:https://open.weixin.qq.com/

新浪微博开放平台地址:http://open.weibo.com/

一、QQ互联

     申请互联审核通过后创建网站应用,如下图:

 

Java实现QQ、微信、新浪微博第三方登录_第1张图片

点击查看APPID和APPkey

 

Java实现QQ、微信、新浪微博第三方登录_第2张图片

Step1:获取Authorization Code

pc获取code地址:https://graph.qq.com/oauth2.0/authorize;获取方式发送HTTP GET请求

Java实现QQ、微信、新浪微博第三方登录_第3张图片

Step2:通过Authorization Code获取Access Token

pc获取token地址:https://graph.qq.com/oauth2.0/token,获取方式发送HTTP GET请求

Step3:获取openID

pc 获取openID的地址:https://graph.qq.com/oauth2.0/me,获取方式发送HTTP GET请求

Java实现QQ、微信、新浪微博第三方登录_第4张图片

Step4:获取qq用户信息

获取用户信息地址:https://graph.qq.com/user/get_user_info

 

Java实现QQ、微信、新浪微博第三方登录_第5张图片

二、微信互联

申请互联审核通过后创建网站应用,如下图:

Java实现QQ、微信、新浪微博第三方登录_第6张图片

微信不开发平台不保存appsecret,申请应用成功时一定要记住

Java实现QQ、微信、新浪微博第三方登录_第7张图片

第一步:请求CODE:

第三方使用网站应用授权登录前请注意已获取相应网页授权作用域(scope=snsapi_login),则可以通过在PC端打开以下链接:

https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

若提示“该链接无法访问”,请检查参数是否填写错误,如redirect_uri的域名与审核时填写的授权域名不一致或scope不为snsapi_login。

 

Java实现QQ、微信、新浪微博第三方登录_第8张图片

第二步:通过code获取access_token

通过code获取access_token

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

Java实现QQ、微信、新浪微博第三方登录_第9张图片

第三步:通过access_token调用接口

获取access_token后,进行接口调用,有以下前提:

1. access_token有效且未超时;

2. 微信用户已授权给第三方应用帐号相应接口作用域(scope)。

对于接口作用域(scope),能调用的接口有以下:

授权作用域(scope)接口接口说明

snsapi_base/sns/oauth2/access_token通过code换取access_token、refresh_token和已授权scope

/sns/oauth2/refresh_token刷新或续期access_token使用

/sns/auth检查access_token有效性

snsapi_userinfo/sns/userinfo获取用户个人信息

其中snsapi_base属于基础接口,若应用已拥有其它scope权限,则默认拥有snsapi_base的权限。使用snsapi_base可以让移动端网页授权绕过跳转授权登录页请求用户授权的动作,直接跳转第三方网页带上授权临时票据(code),但会使得用户已授权作用域(scope)仅为snsapi_base,从而导致无法获取到需要用户授权才允许获得的数据和基础功能。

Java实现QQ、微信、新浪微博第三方登录_第10张图片

三、新浪微博互联

先申请应用

Java实现QQ、微信、新浪微博第三方登录_第11张图片

第一步:请求用户授权code

地址:https://api.weibo.com/oauth2/authorize

Java实现QQ、微信、新浪微博第三方登录_第12张图片

Java实现QQ、微信、新浪微博第三方登录_第13张图片

第二步:获取授权token

地址:https://api.weibo.com/oauth2/access_token

Java实现QQ、微信、新浪微博第三方登录_第14张图片

Java实现QQ、微信、新浪微博第三方登录_第15张图片

第三步:获取授权用户uid

地址:https://api.weibo.com/oauth2/get_token_info

Java实现QQ、微信、新浪微博第三方登录_第16张图片

第四步:根据用户uid获取用户信息

地址:https://api.weibo.com/2/users/show.json

发送GET请求

Java实现QQ、微信、新浪微博第三方登录_第17张图片

Java实现QQ、微信、新浪微博第三方登录_第18张图片

互联的时候注意创建应用时的设置的回调地址和项目里的回调地址保持一致,不然第一步获取code后接下来就无法回调



作者:yljava
链接:https://www.jianshu.com/p/8faaad6e9aec
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(Auth身份认证Java,ios,android,java,spring)