java实现社交账号登录
一、什么是社交登陆
QQ、微博、github等网站的用户量非常大,别的网站为了简化自我网站的登陆与注册逻辑,引入社交登陆功能;
步骤:
1)、用户点击QQ按钮
2)、引导跳转到QQ授权页
3)、用户主动点击授权,跳回之前网页。
1、什么是OAuth2.0
OAuth: OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容。
OAuth2.0:对于用户相关的OpenAPI(例如获取用户信息,动态同步,照片,日志,分享等),为了保护用户数据的安全和隐私,第三方网站访问用户数据前都需要显式的向用户征求授权。
官方版流程:
(A)用户打开客户端以后,客户端要求用户给予授权。
(B)用户同意给予客户端授权。
(C)客户端使用上一步获得的授权,向认证服务器申请令牌。
(D)认证服务器对客户端进行认证以后,确认无误,同意发放令牌。
(E)客户端使用令牌,向资源服务器申请获取资源。
(F)资源服务器确认令牌无误,同意向客户端开放资源。
2、微博登陆准备工作
1、进入微博开放平台
2、登陆微博,进入微连接,选择网站接入
3、选择立即接入
4、创建自己的应用
注意:
这里需要输入用户或者公司的信息,不输入也可以,后面可以根据需要编辑
同时,申请者需要审核和授权,这里暂时也可以不做,但不保证以后微博平台会要求补充
5、我们可以在开发阶段进行测试了
记住自己的app key和app secret我们一会儿用
6、进入高级信息,填写授权回调页的地址(此步骤在创建应用时也会要求输入,但是可以跳过去)
7、进入文档,按照流程测试社交登陆
3、微博登陆测试
1、创建应用
2、文档api
3、引导用户到如下地址
https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI
4、用户同意授权,页面跳转至 xxx/?code=CODE
http://www.gulishop.com/success?code=fef987b3f9ad1169955840b467bfc661
5、使用返回的code,换取access token
授权码请求公式
https://api.weibo.com/oauth2/access_token?client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=authorization_code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=CODE
根据公式的授权码测试url
https://api.weibo.com/oauth2/access_token?client_id=4217011631&client_secret=98de9bad1b633e42e01c46746e791047&grant_type=authorization_code&redirect_uri=http://www.gulishop.com/success&code=fef987b3f9ad1169955840b467bfc661
注意,上面这个是post请求
{
“access_token”: “2.00pDpxyGd3J5bEef6b98778e0ZKsu4”,
“remind_in”: “157679999”,
“expires_in”: 157679999,
“uid”: “6397634785”,
“isRealName”: “true”
}
6、使用AccessToken调用开发API获取用户信息
至此微博登陆调试完成。
Oauth2.0;授权通过后,使用code换取access_token,然后去访问任何开放API
1)、code用后即毁
2)、access_token在几天内是一样的