美文网首页攻城狮iOS技术交流收藏
新浪微博第三方登录添加自动关注官微

新浪微博第三方登录添加自动关注官微

作者: 蓝苹果不是烂苹果 | 来源:发表于2017-02-09 22:36 被阅读615次
    都督城

    使用友盟来实现第三方登录,但是需要在新浪微博登录的时候添加关注官微的功能(下文简称为浪微),通过给友盟和新浪发邮件最终在Google找到了答案

    说明:浪微属于scope功能,如果只是用第三方的登录和简单的分享功能一般用不到。所以如果要使用,大部分需要进一步申请,而浪微只需要在新浪开放平台的控制台填好官微就可以。

    示例

    • 在登录界面做判断,如果是新浪微博登录,那就不使用友盟的,而是用新浪自己的SDK
        if (platformName == UMSocialPlatformType_Sina) {
            //设置请求参数
            WBAuthorizeRequest *request = [WBAuthorizeRequest request];
            //scope可以拼接多个参数,以逗号分割(我只用到了浪微)
            request.scope = @"follow_app_official_microblog";
            //回调的URL
            request.redirectURI = SINA_REDIRECT_URL;
            request.shouldShowWebViewForAuthIfCannotSSO = NO;
            //跳转到微博
            [WeiboSDK sendRequest:request];
        } else {//其他第三方平台:微信、QQ等
            [[UMSocialManager defaultManager] getUserInfoWithPlatform:platformName currentViewController:self completion:^(id result, NSError *error) {
               
            }]
        }
    
    • 在AppDelegate中设置代理
    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
    {
        [WeiboSDK handleOpenURL:url delegate:self]; //设置代理
    }
    
    • 接着实现代理方法
    - (void)didReceiveWeiboResponse:(WBBaseResponse *)response {
        //我这里只用了登录返回,分享还是用的友盟,所以只要不是登录授权返回就不处理
        if (![response isKindOfClass:[WBAuthorizeResponse class]]) {
            return;
        }
        WBAuthorizeResponse *resp = (WBAuthorizeResponse *)response;
        if ([response valueForKey:@"accessToken"] == nil) {
            return;
        }
        //返回值只有一个uid,所以需要我们用另一个接口请求该uid对应用户的所有信息
        NSString *api = @"https://api.weibo.com/2/users/show.json";
        NSMutableDictionary *parametersDic = [NSMutableDictionary new];
        [parametersDic setObject:resp.accessToken forKey:@"access_token"];
        [parametersDic setObject:resp.userID forKey:@"uid"];
        [[DMHttpRequestManager sharedManager] get:api withParameters:parametersDic success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
            if ([responseObject valueForKey:@"name"] == nil) {
                return ;
            } else {
                //获取到数据,以通知的形式传值到登录界面
                [[NSNotificationCenter defaultCenter] postNotificationName:@"WBLOGIN" object:responseObject];
            }
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        
        }];
    }
    
    • 为了接受到通知,需要在登录界面注册该通知,然后处理用户信息
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(weiboLogin:) name:@"WBLOGIN" object:nil];
    

    代码到此结束,但是为什么登录界面还是没有更多权限显示呢???

    你把账号对官微的关注取消了再试试!!!

    我在这里纠结了好久,然后才Google到的答案,切记、切记!

    相关文章

      网友评论

      本文标题:新浪微博第三方登录添加自动关注官微

      本文链接:https://www.haomeiwen.com/subject/rlwwittx.html