基于Spring的新浪微博第三方登录实现
2017-05-09 17:05
288 查看
在《Github第三方登录--通用化的第三方登陆实现》中我们实现了一个通用化的第三方登录框架,其中包括OAUth的基本流程以及最简单的用户注册。但是不同的第三方登录因为其细节不同还是有很多坑的,今天我们就从完善开发者信息开始一步一步添加微博第三方登录的功能。
注意,需要完成微博的第三方登录功能需要有一个域名以及修改该域名网站的权限,之后审核时需要对首页进行修改。这里我们假设我们的域名是tianmaying.com。
我们可以看到,如果需要添加第三方应用只需要完善基本信息,但是需要注意的是,如果你添加了微博第三方登录功能后需要通过其审核,仍然需要通过【身份认证】。这里我们只需要完善【基本信息】即可。
点击右侧的【基本信息】,按要求添加相关的信息,最后完成邮箱验证,我们的基本信息就添加完成了。之后我们需要添加网站的相关信息:
选择左上角的【微连接】->【网站接入】,之后再选择【立即接入】:
我们需要验证的是我们是否对于网站拥有所有者权限,需要修改域名相对应的网页上添加一行代码,按要求进行修改即可。
验证通过后,我们就可以在本地进行第三方登录的测试了。
我们直接复制上述代码,去除掉github相关的代码:
windows系统hosts文件一般在
mac系统hosts文件地址一般为:
在hosts文件添加以下一行:
注意:将代码上线后,还需要经过新浪微博的审核,进入新浪微博--我的应用,按要求进行填写即可。
版权声明 本文由Cliff创作,转载需署名作者且注明文章出处 参考代码 要获取本文的参考代码,请访问: https://www.tianmaying.com/tutorial/OAuth-login-weibo/repo
注意,需要完成微博的第三方登录功能需要有一个域名以及修改该域名网站的权限,之后审核时需要对首页进行修改。这里我们假设我们的域名是tianmaying.com。
完善用户信息
首先我们进入新浪微博开发平台,登录我们的微博账号,点击右上角的【我的应用】,我们就会看见相关的功能以及相对应需要完善的信息。我们可以看到,如果需要添加第三方应用只需要完善基本信息,但是需要注意的是,如果你添加了微博第三方登录功能后需要通过其审核,仍然需要通过【身份认证】。这里我们只需要完善【基本信息】即可。
点击右侧的【基本信息】,按要求添加相关的信息,最后完成邮箱验证,我们的基本信息就添加完成了。之后我们需要添加网站的相关信息:
选择左上角的【微连接】->【网站接入】,之后再选择【立即接入】:
我们需要验证的是我们是否对于网站拥有所有者权限,需要修改域名相对应的网页上添加一行代码,按要求进行修改即可。
验证通过后,我们就可以在本地进行第三方登录的测试了。
添加第三方通用登录框架
《Github第三方登录--通用化的第三方登陆实现》一文中已经完成了一个通用化第三方登录的框架,如果想对通用化第三方登录的实现有所了解,请先阅读《Github第三方登录--通用化的第三方登陆实现》。我们直接复制上述代码,去除掉github相关的代码:
添加SinaWeiboOAuthService
按照《Github第三方登录--通用化的第三方登陆实现》,我们需要为Weibo添加两个类,SinaWeiboAPI以及
SinaWeiboOAuthService,但是
SinaWeiboAPI在scribe中已经提供了,我们直接使用即可。接下来我们来添加
SinaWeiboOAuthService:
public class SinaWeiboOAuthService extends OAuthServiceDeractor { private static final String PROTECTED_RESOURCE_URL = "https://api.weibo.com/oauth2/get_token_info"; public SinaWeiboOAuthService(OAuthService oAuthService) { super(oAuthService, OAuthTypes.SINA_WEIBO); } @Override public OAuthUser getOAuthUser(Token accessToken) { OAuthRequest request = new OAuthRequest(Verb.POST, PROTECTED_RESOURCE_URL); this.signRequest(accessToken, request); Response response = request.send(); OAuthUser oAuthUser = new OAuthUser(); oAuthUser.setoAuthType(getoAuthType()); oAuthUser.setoAuthId(JSONPath.eval(JSON.parse(response.getBody()), "$.uid").toString()); oAuthUser.setUser(new User()); return oAuthUser; } }
SinaWeiboOAuthService需要完成获取用户的相关信息,并将其转换成为OAuthUser对象,关于如何获取新浪微博的用户信息以及其相关参数,可以参看新浪微博的官方文档。
配置OAuthService
最后,按照我们从新浪微博中得到的appKey、appSecret以及我们定义的callback_uri对SinaWeiboOAuthService进行相关配置:
@Configuration public class OAuthConfig { private static final String CALLBACK_URL = "http://tianmaying.com/oauth/%s/callback"; @Value("${oAuth.sina.appKey}") String sinaAppKey; @Value("${oAuth.sina.appSecret}") String sinaAppSecret; @Bean public OAuthServiceDeractor getSinaOAuthService(){ return new SinaWeiboOAuthService(new ServiceBuilder() .provider(SinaWeiboApi20.class) .apiKey(sinaAppKey) .apiSecret(sinaAppSecret) .callback(String.format(CALLBACK_URL, OAuthTypes.SINA_WEIBO)) .build()); } }
修改hosts
由于微博的第三方登录是与域名相绑定的,因此我们需要我们的hosts文件,将本地127.0.0.1绑定到
tianmaying.com即可。
windows系统hosts文件一般在
C:\WINDOWS\system32\drivers\etc
mac系统hosts文件地址一般为:
/etc/hosts
在hosts文件添加以下一行:
127.0.0.1 tianmaying.com
调试
进入根目录,运行sudo mvn spring-boot:run命令,访问http://tianmaying.com (之前填写应用信息以及修改hosts时所填写的域名,这三个域名必须一致),由于必须通过域名进行访问,所以我们需要监听80端口,运行时需要超级管理员权限。
注意:将代码上线后,还需要经过新浪微博的审核,进入新浪微博--我的应用,按要求进行填写即可。
版权声明 本文由Cliff创作,转载需署名作者且注明文章出处 参考代码 要获取本文的参考代码,请访问: https://www.tianmaying.com/tutorial/OAuth-login-weibo/repo
相关文章推荐
- 基于Spring的新浪微博第三方登录实现
- 基于Spring的微信第三方登录实现
- 基于Spring的QQ第三方登录实现
- 基于Spring的Github第三方登录--通用化的第三方登陆实现
- 基于Spring的微信第三方登录实现
- 基于Spring的QQ第三方登录实现
- 基于Spring的Github第三方登录--通用化的第三方登陆实现
- 基于Spring的QQ第三方登录实现
- OSGI企业应用开发(十五)基于Spring、Mybatis、Spring MVC实现一个登录应用
- 实现QQ、微信、新浪微博和百度第三方登录(Android Studio)
- 【Android实战】实现新浪微博第三方登录获取用户信息
- 基于第三方QQ授权登录和新浪微博授权登录的iOS代码分析
- 实现新浪微博第三方登录获取用户信息
- 基于第三方QQ授权登录和新浪微博授权登录的iOS代码分析
- Android 实现QQ、微信、新浪微博和百度第三方登录
- 单点登录系统实现基于SpringBoot
- 实现QQ、微信、新浪微博和百度第三方登录(Android Studio)
- php实现新浪微博第三方信任登录
- 使用Sharesdk实现第三方平台登录(qq,新浪微博)
- 基于第三方QQ授权登录和新浪微博授权登录的iOS代码分析