? ? 新浪騰訊的三方登錄我是分開做的,當(dāng)時(shí)可能剛自學(xué)ShareSDK的時(shí)候有點(diǎn)蒙矛绘,感覺老是出錯(cuò),就直接在騰訊開放平臺(tái)申請(qǐng)下載SDK在做騰訊的登錄,成功之后再回頭看ShareSDK的時(shí)候仔細(xì)了一點(diǎn)顽分,就發(fā)現(xiàn)了很多之前沒有注意到的問題,最終也成功施蜜。所以就直接放出來的這兩個(gè)的三方登錄卒蘸,使用的不同的途徑。因?yàn)槲⑿派暾?qǐng)的開發(fā)者資質(zhì)需要付費(fèi)翻默,所以直接就拜拜了缸沃。原諒我只是一個(gè)屌絲。
一修械、ShareSDK
? 1.環(huán)境配置
? ? ? 使用ShareSDK的官方說明趾牧,認(rèn)真仔細(xì)不能遺漏不要模糊略過。ShareSDK簡(jiǎn)潔版iOS文檔
? ? ? 其中最后的時(shí)候提到的URL scheme肯污,有興趣的話可以學(xué)習(xí)一下翘单,簡(jiǎn)單說可以理解是移動(dòng)端App之間的通信是通過它做到的吨枉。詳解看這里。
? ?2.具體實(shí)踐
? ? ??ShareSDK簡(jiǎn)潔版iOS文檔? 同上哄芜,仔細(xì)慢慢來就好貌亭。 ?
? ? ?到這里應(yīng)該才算開始這篇文章的正文部分。
? ? 3.infoplist中
? (1)iOS9之后忠烛,使用的是https属提,所以需要配置
? ? ?App Transport Security Settings -> Allow Arbitrary Loads ->YES (老生常談了,反正什么都用得上)美尸。
? ? (2)這里需要添加的URL types冤议,就跟上面的 URL scheme有關(guān)系了,所以說還是要多少了解下上邊放出來的連接师坎,人家寫的挺好的恕酸,淺顯的了解的話挺好的,深度的話我也不知道胯陋,因?yàn)槲乙膊惶镂拢蟾胖涝趺椿厥拢賮戆伞?/p>
? ? ? 這一步點(diǎn)到target中的info(其實(shí)哪個(gè)infoplist都差不多遏乔,不過在target里設(shè)置的話稍微簡(jiǎn)單一點(diǎn)义矛,這里ShareSDK文檔也提到,我是又啰嗦了一下)盟萨。
? ? ? 點(diǎn)過來之后最下邊有一個(gè)URL Types
? ? ?點(diǎn)開它是這樣的
? ? ? ?其中重要的是URL Schemes凉翻,填寫的格式是 tencent (使用的三方平臺(tái)) + 在此平臺(tái)上申請(qǐng)到的appkey。這里只是騰訊的例子捻激,其他都是各找各的東家制轰。
? ? ? (3)完成上一步之后,還需要在infoplist中補(bǔ)充一個(gè)數(shù)組key值為L(zhǎng)SApplicationQueriesSchemes的內(nèi)容胞谭。包括的內(nèi)容有點(diǎn)多垃杖。
注意:請(qǐng)忽略那個(gè)baidumap,與本文沒有關(guān)系丈屹。里邊的內(nèi)容網(wǎng)上也會(huì)搜索到调俘,其實(shí)我是根據(jù)出錯(cuò)顯示缺少了哪個(gè)之后添加上的。
4.具體程序
頭文件該導(dǎo)入的都要導(dǎo)入進(jìn)去旺垒,官方的文檔應(yīng)該都有說明彩库,在此不做贅述。
ShareSDK 調(diào)用了
+ (void)registerApp:(NSString*)appKey ?
activePlatforms:(NSArray*)activePlatforms ?
onImport:(SSDKImportHandler)importHandler ??
onConfiguration:(SSDKConfigurationHandler)configurationHandler;
1.appKey 是我們?cè)赟hareSDK官網(wǎng)申請(qǐng)到的appkey袖牙,是shareSDK的key侧巨,不是三方平臺(tái)申請(qǐng)到的key舅锄。
2.activePlatforms 是一個(gè)數(shù)組鞭达,里邊要放的數(shù)據(jù)是你想要操作的三方平臺(tái)司忱。
3.onImport 是一個(gè)block方法,在這個(gè)方法里用switch來添加每個(gè)平臺(tái)
4.onConfiguration 這個(gè)block方法畴蹭,需要對(duì)在onImport 中添加過的平臺(tái)進(jìn)行注冊(cè) 坦仍,以微博為例,具體方法為
- (void)SSDKSetupSinaWeiboByAppKey:(NSString*)appKey
appSecret:(NSString*)appSecret
redirectUri:(NSString*)redirectUri
authType:(NSString*)authType;
(1)appKey為三方平臺(tái)的appKey值
(2)appSecret 為三方平臺(tái)的appSecret值
(4)authType ?授權(quán)方式叨襟。值可以是:SSDKAuthTypeSSO繁扎、SSDKAuthTypeWeb、SSDKAuthTypeBoth糊闽,分別代表SSO梳玫、網(wǎng)頁授權(quán)、SSO+網(wǎng)頁授權(quán)右犹。
(3)redirectUri :回調(diào)地址 ?提澎,這個(gè)需要重點(diǎn)講 ,栽的最多的地方念链,一天一栽盼忌。
redirectUri的問題?
? ? ?如果你出現(xiàn)過( error:redirect_uri_mismatch )的問題 基本就是這里設(shè)置的問題了
? ? ?先放個(gè)鏈接吧 ?錯(cuò)誤解決方法
? ? ?這個(gè)值對(duì)應(yīng)的是微博開放平臺(tái)-> 我的應(yīng)用 -> 應(yīng)用信息->基本信息->應(yīng)用地址
? ? ?由上面的鏈接地址可以看到,我們需要對(duì)應(yīng)用信息中的高級(jí)信息-> 授權(quán)設(shè)置進(jìn)行操作掂墓,這里的地址其實(shí)隨便寫個(gè)公司的主頁也可以谦纱,不過最好和基本信息的應(yīng)用地址一致。
? ? 微博開放者平臺(tái)設(shè)置完這一步之后君编,要記得在Mob官網(wǎng)進(jìn)行同步設(shè)置跨嘉。
(1)首先進(jìn)入Mob中自己所創(chuàng)建的應(yīng)用后臺(tái)信息,側(cè)邊框部分
點(diǎn)進(jìn)入社會(huì)化平臺(tái)設(shè)置啦粹,進(jìn)來后大致是這樣的
將是否開啟回流短鏈關(guān)閉偿荷,然后選擇要設(shè)置的平臺(tái),我選擇的是微博唠椭。
依照要求填寫你在微博開放平臺(tái)申請(qǐng)的AppKey AppSecret 授權(quán)回調(diào)頁跳纳。
這里的授權(quán)回調(diào)頁填寫的就是微博開放平臺(tái)應(yīng)用信息中的高級(jí)信息-> 授權(quán)設(shè)置中保持一致。
5.實(shí)現(xiàn)代碼
這里可以設(shè)計(jì)寫在一個(gè)點(diǎn)擊事件的觸發(fā)方法里贪嫂,觸發(fā)后調(diào)用三方登錄
ShareSDK調(diào)用
+ (void)getUserInfo:(SSDKPlatformType)platformType
onStateChanged:(SSDKGetUserStateChangedHandler)stateChangedHandler;
platformType 為你選擇的三方平臺(tái)
onStateChanged block方法中對(duì)結(jié)果進(jìn)行判斷 寺庄,是否成功
if(state ==SSDKResponseStateSuccess) {
NSLog(@"==成功");
}else{
NSLog(@"==失敗");
}
到這里ShareSDK微博登錄基本完了,主要的代碼還要看官方的文檔力崇,這篇文章重點(diǎn)是在進(jìn)行操作時(shí)出現(xiàn)的錯(cuò)誤的解釋斗塘。
騰訊自己的SDK實(shí)現(xiàn)三方登錄,未完待續(xù)...