分享到 :

授权登录

如果用户没有安装手机QQ,且开发者具有webview权限,则显示账号密码登录页;如果开发者没有webview权限,sdk版本大于等于2.9,则显示登录页,sdk版本小于2.9,则显示下载页。由于跳转至下载页在当前苹果app审核有被拒风险,所以,希望开发者尽快升级使用最新版sdk。
整个授权过程可以分为,发送请求获取用户授权以及获取用户授权结果两个部分。

  1. 1)发送请求获取用户授权:

在取得用户授权之前,首先必须清楚自己需要用户的哪些信息,iOS SDK提供多种选择,开发者可以根据自己的需要请求用户不同信息的授权。具体可以获取的授权信息参见《获取用户授权参数说明》。
在设置完需要请求的授权信息之后,就可以发送请求了(备注:inSafari参数从iOS SDK1.3版本后废除) 。

NSArray* permissions = [NSArray arrayWithObjects:kOPEN_PERMISSION_GET_USER_INFO,kOPEN_PERMISSION_GET_SIMPLE_USER_INFO,kOPEN_PERMISSION_ADD_SHARE,nil];
TencentOAuth *_tencentOAuth = [TencentOAuth initWithAppid:appid andDelegate:delegate];
[_tencentOAuth authorize:permissions inSafari:NO];

2) 获取用户授权结果获取用户授权结果,采用的是代理回调的方式,所以开发者需要实现TencentLoginDelegate协议,登录结果分为三种:登录成功、登录失败和登录取消。

- (void)tencentDidLogin; // 登录成功后的回调
- (void)tencentDidNotLogin:(BOOL)cancelled; // 登录失败后的回调
- (void)tencentDidNotNetWork; // 登录时网络有问题的回调

如果登录成功,则开发者可以通过实现TencentLoginDelegate协议中的以下方法获取:

// 登录时权限信息的获得
- (NSArray *)getAuthorizedPermissions:(NSArray *)permissions
withExtraParams:(NSDictionary *)extraParams;

强制输入账号密码登录(3.3.5)

当id<TencentLoginDelegate>实现了如下接口

/**
 * 强制网页登录,包括账号密码登录和二维码登录
 * return YES时,就算本地有手Q也会打开web界面
 */
- (BOOL)forceWebLogin;

并且强制返回了YES,那么无论本地是否安装了手Q,调用授权登录接口都会直接拉起网页。

返回顶部