使用新浪微博开放平台api同步微博内容至自己网站(Cliff一步添加微博第三方登录的功能有哪些?(图) )
优采云 发布时间: 2021-08-31 01:01使用新浪微博开放平台api同步微博内容至自己网站(Cliff一步添加微博第三方登录的功能有哪些?(图)
)
Cliff 发表于天马营
在《Github第三方登录-通用第三方登录实现》中,我们实现了通用的第三方登录框架,包括OAUth的基本流程和最简单的用户注册。但是,不同的第三方登录由于细节不同,仍然存在很多陷阱。今天我们就从完善开发者信息入手,逐步添加微博第三方登录功能。
注意,完成微博第三方登录功能需要有域名和修改域名网站的权限,审核时需要修改主页。这里我们假设我们的域名是。
完善用户信息
首先我们进入新浪微博开发平台,登录我们的微博账号,点击右上角的【我的应用】,我们会看到相关的功能和相应的需要改进的信息。
我们可以看到,如果需要添加第三方应用,只需要填写基本信息即可,但是需要注意的是,如果添加微博第三方登录功能后需要通过审核,还需要通过【身份认证】。这里我们只需要填写【基本信息】即可。
点击右侧的【基本信息】,根据需要添加相关信息,最后完成邮箱验证,我们的基本信息就添加好了。然后我们需要添加网站相关信息:
选择左上角的【微连接】->【网站Access】,然后选择【立即访问】:
需要验证的是我们是否拥有网站的owner权限,需要修改网页对应的域名添加一行代码,根据需要修改。
验证通过后,我们可以在本地测试第三方登录。
添加第三方通用登录框架
《Github 第三方登录-通用第三方登录实现》一文完成了通用的第三方登录框架。如果想了解广义第三方登录的实现,请阅读《Github第三方登录-广义第三方登录实现》。
我们直接复制上面的代码,去掉github相关的代码:
添加新浪微博OAuthService
根据《Github第三方登录-通用第三方登录实现》,我们需要为微博添加两个类,SinaWeiboAPI和SinaWeiboOAuthService,但是SinaWeiboAPI已经在scribe中提供了,我们可以直接使用。接下来我们将添加新浪微博OAuthService:
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;
}
}
新浪微博OAuthService需要完成用户信息的获取,并转换成OAuthUser对象。新浪微博用户信息及相关参数的获取方式请参考新浪微博官方文档。
配置 OAuthService
最后根据我们在新浪微博中定义的a*敏*感*词*ey、appSecret和callback_uri来配置SinaWeiboOAuthService:
修改主机
因为微博的第三方登录是绑定域名的,所以需要我们的hosts文件,绑定本地的127.0.0.1。
windows系统hosts文件一般在C:\WINDOWS\system32\drivers\etc
Mac系统hosts文件地址一般为:/etc/hosts
在 hosts 文件中添加以下行:
127.0.0.1 tianmaying.com
调试
进入根目录,运行sudo mvn spring-boot:run命令访问课程|天马营地(之前在修改hosts的时候填写申请信息和修改域名,这三个域名一定要一样),因为必须通过域名Access来完成,所以我们需要*敏*感*词*80端口,并且需要运行时超级管理员权限。
注意:代码上线后需要新浪微博审核,进入新浪微博-我的申请,按要求填写。