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

字数 301阅读 1267
都督城

使用友盟来实现第三方登录,但是需要在新浪微博登录的时候添加关注官微的功能(下文简称为浪微),通过给友盟和新浪发邮件最终在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到的答案,切记、切记!

推荐阅读更多精彩内容