分享到 :

增量授权

当第三方应用调用某个API接口时,如果服务器返回操作未被授权,则会触发增量授权逻辑。第三方应用需自行实现tencentNeedPerformIncrAuth:withPermissions:协议接口才能够进入增量授权逻辑,否则默认第三方应用放弃增量授权。示例如下:

- (BOOL)tencentNeedPerformIncrAuth:(TencentOAuth *)tencentOAuth withPermissions: (NSArray *) permissions {
   // incrAuthWithPermissions是增量授权时需要调用的登录接口
   // permissions是需要增量授权的权限列表
   [tencentOAuth incrAuthWithPermissions:permissions];
   // 返回NO表明不需要再回传未授权API接口的原始请求结果,否则返回YES
   return NO;
}

注意:在用户通过增量授权页重新授权登录后,第三方应用需更新自己维护的token及有效期限等信息。

用户在增量授权时是可以更换帐号进行登录的,强烈要求第三方应用核对增量授权后的用户openid是否一致,以添加必要的处理逻辑(用户帐号变更需重新拉取用户的资料等信息)
增量授权成功时,会通过tencentDidUpdate:协议接口通知第三方应用:

- (void)tencentDidUpdate:(TencentOAuth *)tencentOAuth {
    _labelTitle.text = @"增量授权完成";
    if (tencentOAuth.accessToken && 0 != [tencentOAuth.accessToken length]) {
        // 在这里第三方应用需要更新自己维护的token及有效期限等信息
        // **务必在这里检查用户的openid是否有变更,变更需重新拉取用户的资料等信息**
        _labelAccessToken.text = tencentOAuth.accessToken;
    } else {
        _labelAccessToken.text = @"增量授权不成功,没有获取accesstoken";
    }
}

增量授权失败时,会通过tencentFailedUpdate:协议接口通知第三方应用:

- (void)tencentFailedUpdate:(UpdateFailType)reason {
    switch (reason) {
        case kUpdateFailNetwork:
               _labelTitle.text=@"增量授权失败,无网络连接,请设置网络";
               break;
        case kUpdateFailUserCancel:
               _labelTitle.text=@"增量授权失败,用户取消授权";
               break;
        case kUpdateFailUnknown:
        default:
               _labelTitle.text=@"增量授权失败,未知错误";
               break;
        }
}
返回顶部