第三方登录:新浪微博登录(OAuth2.0)
在《Github第三方登錄--通用化的第三方登陸實(shí)現(xiàn)》中我們實(shí)現(xiàn)了一個(gè)通用化的第三方登錄框架,其中包括OAUth的基本流程以及最簡單的用戶注冊。但是不同的第三方登錄因?yàn)槠浼?xì)節(jié)不同還是有很多坑的,今天我們就從完善開發(fā)者信息開始一步一步添加微博第三方登錄的功能。
注意,需要完成微博的第三方登錄功能需要有一個(gè)域名以及修改該域名網(wǎng)站的權(quán)限,之后審核時(shí)需要對首頁進(jìn)行修改。這里我們假設(shè)我們的域名是tianmaying.com。
完善用戶信息
首先我們進(jìn)入新浪微博開發(fā)平臺(tái),登錄我們的微博賬號,點(diǎn)擊右上角的【我的應(yīng)用】,我們就會(huì)看見相關(guān)的功能以及相對應(yīng)需要完善的信息。
我們可以看到,如果需要添加第三方應(yīng)用只需要完善基本信息,但是需要注意的是,如果你添加了微博第三方登錄功能后需要通過其審核,仍然需要通過【身份認(rèn)證】。這里我們只需要完善【基本信息】即可。
點(diǎn)擊右側(cè)的【基本信息】,按要求添加相關(guān)的信息,最后完成郵箱驗(yàn)證,我們的基本信息就添加完成了。之后我們需要添加網(wǎng)站的相關(guān)信息:
選擇左上角的【微連接】->【網(wǎng)站接入】,之后再選擇【立即接入】:
我們需要驗(yàn)證的是我們是否對于網(wǎng)站擁有所有者權(quán)限,需要修改域名相對應(yīng)的網(wǎng)頁上添加一行代碼,按要求進(jìn)行修改即可。
驗(yàn)證通過后,我們就可以在本地進(jìn)行第三方登錄的測試了。
添加第三方通用登錄框架
《Github第三方登錄--通用化的第三方登陸實(shí)現(xiàn)》一文中已經(jīng)完成了一個(gè)通用化第三方登錄的框架,如果想對通用化第三方登錄的實(shí)現(xiàn)有所了解,請先閱讀《Github第三方登錄--通用化的第三方登陸實(shí)現(xiàn)》。
我們直接復(fù)制上述代碼,去除掉github相關(guān)的代碼:
添加SinaWeiboOAuthService
按照《Github第三方登錄--通用化的第三方登陸實(shí)現(xiàn)》,我們需要為Weibo添加兩個(gè)類,SinaWeiboAPI以及SinaWeiboOAuthService,但是SinaWeiboAPI在scribe中已經(jīng)提供了,我們直接使用即可。接下來我們來添加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需要完成獲取用戶的相關(guān)信息,并將其轉(zhuǎn)換成為OAuthUser對象,關(guān)于如何獲取新浪微博的用戶信息以及其相關(guān)參數(shù),可以參看新浪微博的官方文檔。
配置OAuthService
最后,按照我們從新浪微博中得到的appKey、appSecret以及我們定義的callback_uri對SinaWeiboOAuthService進(jìn)行相關(guān)配置:
@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系統(tǒng)hosts文件一般在C:WINDOWSsystem32driversetc
mac系統(tǒng)hosts文件地址一般為:/etc/hosts
在hosts文件添加以下一行:
127.0.0.1 tianmaying.com
調(diào)試
進(jìn)入根目錄,運(yùn)行sudo mvn spring-boot:run命令,訪問http://tianmaying.com(之前填寫應(yīng)用信息以及修改hosts時(shí)所填寫的域名,這三個(gè)域名必須一致),由于必須通過域名進(jìn)行訪問,所以我們需要監(jiān)聽80端口,運(yùn)行時(shí)需要超級管理員權(quán)限。
注意:將代碼上線后,還需要經(jīng)過新浪微博的審核,進(jìn)入新浪微博--我的應(yīng)用,按要求進(jìn)行填寫即可。
參考代碼,請?jiān)L問:https://www.tianmaying.com/tutorial/OAuth-login-weibo/repo
本文轉(zhuǎn)載自
原文作者:Cliff
原文鏈接:https://www.tianmaying.com/tutorial/OAuth-login-weibo
總結(jié)
以上是生活随笔為你收集整理的第三方登录:新浪微博登录(OAuth2.0)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设置U盘启动电脑如何设置光盘启动
- 下一篇: 电脑脏了要怎么清洗如何擦电脑