IOS应用 第三方登录授权与分享

    这几天因为项目需要,一直在搞IOS的第三方登录授权与分享,包括新浪微博登录授权分享,QQ登录授权,腾讯微博分享,人人网登录授权与分享。

    其实单纯想想的话,实现起来可能很简单,无非是去各个平台分别申请AK与SK,然后创建应用,而且都需要审核。但是真正做起来就会遇到这样那样的问题,而且这几个平台的客服都不理人或是回答不及时,没起到什么作用。问答系统的上提问的话,也几乎没有人回。无奈一遍遍地看文档,看Demo,看API。最后终于基本搞定登录分享大体部分问题。但是还有几个奇葩的问题有待继续调查。希望有这方面经验的前辈能不吝赐教,非常感谢。

    1.新浪微博SDK和人人网SDK引入后,实现该实现的协议,调用等,没有安装相应客户端时,点击登录打不开Web登录页面。

      具体:Demo中当安装了新浪微博客户端的时候,是可以进行授权的,可以调起相应的代理方法。如果没有安装新浪微博客户端是跳转到Web登录页面的。随后我把SDK嵌入到工程中,其他都参照API文档及demo的使用方法调试自己的应用。但是如果没有客户端时,虽然也执行了[WeiboSDK sendRequest:request];这句话,但是就是打不开登录页面。另外我把Demo中的App key换成自己的,虽然页面没有完全加载出来,但是可以调起相应的代理方法的。我不明白为什么放到自己的应用中就打不开登录页面呢。关于此问题,网上也调查了好久,但是都没有可行的方案。

      解决方案:通过一点点转移工程,终于发现在我的工程中,设置主窗口时,调用了这句[self.winAlertmakeKeyWindow];导致。

去掉的话就能打开登录页面了。另外,貌似[self.windowmakeKeyAndVisible];也对登录页面的打开有影响。

   遗留问题:到现在我也没有弄清楚到底为什么会有这样的影响。

  

  2.QQ登录,在没有客户端的情况下,会提示用户下载。

    具体:Demo中,如果安装了客户端的话,会调用客户端进行授权登录,如果没有客户端的话,会打开Web页面进行授权登录。我一步步按照Demo和API文档来做。可是最后的结果竟然是打开下载画面。如果我把Demo中的AppId换成自己的,依然是提示用户进行下载。从网上搜到,貌似是今年5月,腾讯为了安全起见,已经都改为客户端授权了,不再支持Wep授权。如果想继续使用Wep授权的话,可能要与客服联系,或申请相应接口。

    遗留问题:因为联系不上客服,也没有可行的方案,至今保持提示用户下载页面。

  

  3.新浪微博分享时,用Demo中方法会打开微博客户端的分享界面进行发送,而我想直接在自己的应用中分享。

    具体:Demo中如下调用:

    WBAuthorizeRequest *authRequest = [WBAuthorizeRequestrequest];

    authRequest.redirectURI =kRedirectURI;

    authRequest.scope =@"all";

    

    WBSendMessageToWeiboRequest *request = [WBSendMessageToWeiboRequestrequestWithMessage:[selfmessageToShare]authInfo:authRequestaccess_token:myDelegate.wbtoken];

    request.userInfo =@{@"ShareMessageFrom":@"SendMessageToWeiboViewController",

                        @"Other_Info_1": [NSNumbernumberWithInt:123],

                        @"Other_Info_2": @[@"obj1",@"obj2"],

                         @"Other_Info_3":@{@"key1": @"obj1", @"key2": @"obj2"}};


    [WeiboSDKsendRequest:request];

    而且文档中代码中也没有写清楚,不调用客户端的话,怎么分享。无奈只能回过头自己看API。

    解决方案:换成下面的接口就可以不经过微博客户端直接发微博。

        [WBHttpRequestrequestWithAccessToken:self.module_context.wbtoken

                                          url:@"https://api.weibo.com/2/statuses/update.json"

                                  httpMethod:@"POST"

                                      params:@{@"status":text}

                                    delegate:self

                                     withTag:nil];

    遗留问题:不清楚如果上传图片的话,该怎么给params传值。


  4.腾讯微博,分享时一直报100031,app has no privilege to use this api.

    具体:调用接口为:addShareWithParams。用Demo试了下是同时往QQ空间和腾讯微博分享。把Demo中的AppId换成自己的AppId,也是报同样的错误。貌似是申请的AppId缺少权限。使用说明中有说addShareWithParams接口已经废弃。废弃了为什么最新的Demo中还在使用。误导啊。

    解决方案:把调用接口改为通用接口sendAPIRequest并实现代理方法:- (void)cgiRequest:(TCAPIRequest *)request didResponse:(APIResponse *)response。就可以不经过QQ客户端直接往腾讯微博上发微博。


  5.人人网分享时还带一条评论。

    具体:使用如下

        PutShareUrlParam *param = [[PutShareUrlParamalloc] init];

        param.comment =@"分享测试";

        param.url =@"http://rrurl.cn/f0Q51C";

        [RennClientsendAsynRequest:param delegate:self];

    遗留问题:分享后的人人网画面中分享内容是有了,但是在该分享下确多了条评论。待解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值