第三方登录集成问题

最近在做第三方登录,不同于以往的仅仅是集成友盟或者shareSDK,而是自己集成几大开发者平台的sdk自己来做,所以还是会遇到一些问题,以下是一部分记录,共享给大家,希望能够帮助的一些有问题的朋友们。多多交流。

一、微博集成

  • 问:21322错误

  • 答:原因微博开发者平台上填写的redirect URL和你在APP中填写不一致

  • 问:Error_code = 21338,Error = "sso package or sign error"

  • 答:这是由于平台设置的bundle id 和 工程设置的bundle id不对应造成的。

  • 问:微博授权 无法打开微博APP,一直走SSO 网页授权,并且报错 “无法连接网络请点击重试”

  • 答:需要在info.plist文件中做如下添加

第三方登录集成问题_第1张图片
.png
  • 问:微博授权Oauth2.0网页授权的时候,关闭页面一直没有回调
  • 答:三个 openURL:(NSURL)url方法最好都要写(iOS系统有关),避免因为没有实现回调方法而导致这种问题
    代码如下:
    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集成

这个暂时没遇到什么问题,仅仅贴一下代码


_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];

三、微信集成

同上


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:未安装微信客户端
}

四、支付宝集成

  • 问:调起支付宝APP失败
  • 答:需要在info.plist中url types添加如下配置
支付宝配置.png
  • 问:调用支付宝APP之后,一直提示“应用签名验证失败,请联系商户”
  • 答:
1 、仔细检查自己调用alipay的API时所传参数正确性,一个key都不能错以及每个key的长度
2、sign加密一定要是pkcs8格式的私钥进行加密,这一步不能搞错,不管是服务端来做还是移动端做

代码如下:

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 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:你的处理

}];

你可能感兴趣的:(第三方登录集成问题)