版权声明:本文为博主原创文章,未经博主允许不得转载。转载请注明转至Z.MJun的简书
TencentOAuth这个对象必须是一个成员变量。否侧不会产生回调。
没有回调的做法
方法名称
{
TencentOAuth *oauth = [[TencentOAuth alloc] initWithAppId:appId andDelegate:self];
[oauth setRedirectURI:uri];
[oauth authorize:@[kOPEN_PERMISSION_GET_USER_INFO] inSafari:NO];
}
错误的在于,oauth这个变量只在这个作用区域内有效。跳出这个作用区域就被释释放了,等到回调的时候当然就找不到这个变量。
有回调的做法
@interface ClassName () <TencentSessionDelegate>
{
TencentOAuth *_oauth;
}
这样子,在经过初始化后,变量被保存,等到登录成功回调就有了数据了。
个人认为
这个样的调用是腾讯QQ登录的API做的不够人性化,可以借鉴微信的第三方登录方法。开发者开发到一定的高度后,就不再把一些变量保存,或者暴露在外面,所以往往容易掉入这个陷阱。
网友评论