最近在做第三方登錄抒线,不同于以往的僅僅是集成友盟或者shareSDK,而是自己集成幾大開發(fā)者平臺的sdk自己來做夕冲,所以還是會遇到一些問題氮兵,以下是一部分記錄,共享給大家歹鱼,希望能夠幫助的一些有問題的朋友們泣栈。多多交流。
一、微博集成
問:21322錯誤
答:原因微博開發(fā)者平臺上填寫的redirect URL和你在APP中填寫不一致
問:Error_code = 21338,Error = "sso package or sign error"
答:這是由于平臺設置的bundle id 和 工程設置的bundle id不對應造成的南片。
問:微博授權(quán) 無法打開微博APP篙悯,一直走SSO 網(wǎng)頁授權(quán),并且報錯 “無法連接網(wǎng)絡請點擊重試”
答:需要在info.plist文件中做如下添加
- 問:微博授權(quán)Oauth2.0網(wǎng)頁授權(quán)的時候铃绒,關(guān)閉頁面一直沒有回調(diào)
- 答:三個 openURL:(NSURL)url方法最好都要寫(iOS系統(tǒng)有關(guān)),避免因為沒有實現(xiàn)回調(diào)方法而導致這種問題
代碼如下:
WBAuthorizeRequest *request = [WBAuthorizeRequest request];
request.redirectURI = Weibo_Redirect_url;
request.scope = @"all";
request.userInfo = @{@"SSO_From": @"YYBThirdLoginViewController",
@"Other_Info_1": [NSNumber numberWithInt:123],
@"Other_Info_2": @[@"obj1", @"obj2"],
@"Other_Info_3": @{@"key1": @"obj1", @"key2": @"obj2"}};
[WeiboSDK sendRequest:request];
二螺捐、QQ集成
這個暫時沒遇到什么問題颠悬,僅僅貼一下代碼
<pre><code>
_tencent = [[TencentOAuth alloc]initWithAppId:QQ_APP_Id andDelegate:self];
NSArray* permissions = [NSArray arrayWithObjects:
kOPEN_PERMISSION_GET_USER_INFO,
kOPEN_PERMISSION_GET_SIMPLE_USER_INFO,
kOPEN_PERMISSION_GET_INFO,
nil];
[_tencent authorize:permissions];
</pre></code>
三、微信集成
同上
<pre><code>
if([WXApi isWXAppInstalled] && [WXApi isWXAppSupportApi])
{
SendAuthReq *req = [[SendAuthReq alloc] init];
req.scope = @"snsapi_userinfo,snsapi_base";
req.state = @"";
BOOL bo = [WXApi sendReq:req];
if (bo)
{
//TODO:成功要做的
}
else
{
//TODO:失敗要做的
}
} else
{
//TODO:未安裝微信客戶端
}
</pre></code>
四定血、支付寶集成
- 問:調(diào)起支付寶APP失敗
- 答:需要在info.plist中url types添加如下配置
- 問:調(diào)用支付寶APP之后赔癌,一直提示“應用簽名驗證失敗,請聯(lián)系商戶”
- 答:
1 澜沟、仔細檢查自己調(diào)用alipay的API時所傳參數(shù)正確性灾票,一個key都不能錯以及每個key的長度
2、sign加密一定要是pkcs8格式的私鑰進行加密茫虽,這一步不能搞錯刊苍,不管是服務端來做還是移動端做
代碼如下:
<pre><code>NSString * infoStr = [NSString stringWithFormat:@"apiname="com.alipay.account.auth"&method="alipay.open.auth.sdk.code.get"&app_id="%@"&app_name="mc"&biz_type="openservice"&pid="%@"&product_id="APP_FAST_LOGIN"&scope="kuaijie"&target_id="%@"&auth_type="AUTHACCOUNT"",ALI_APP_ID,ALI_PID,@"gd199206150723"];
id<DataSigner> signer = CreateRSADataSigner(ALI_Sign);
NSString * signStr = [signer signString:infoStr];
infoStr = [NSString stringWithFormat:@"sign_type="RSA"&%@&sign="%@"",infoStr,signStr];
[[AlipaySDK defaultService] auth_V2WithInfo:infoStr fromScheme:kAPPScheme callback:^(NSDictionary *resultDic)
{
//TODO:你的處理
}];
</pre></code>