第三方QQ授权登录

在这里插入图片描述
1.下载SDK

https://wiki.open.qq.com/index.php?title=mobile/SDK下载&oldid=47694

2.导入工程
在这里插入图片描述
在这里插入图片描述
3.添加framework
在这里插入图片描述
4.加入白名单,把demo中info.plist中的LSApplicationQueriesSchemes添加到工程中的info.plist
在这里插入图片描述
5.导入头文件进行授权
在这里插入图片描述
6.登录 服从代理,系统没有QQ的情况下执行

- (void)thirdQQLogin{
    //跳转QQ第三方登录页面
    //没有QQ的情况下
    self.oauth = [[TencentOAuth alloc] initWithAppId:@"1108995429" andDelegate:self];
    NSMutableArray *permissions = [[NSMutableArray alloc] initWithObjects:kOPEN_PERMISSION_GET_USER_INFO, nil];
    [_oauth authorize:permissions inSafari:NO];
}

在这里插入图片描述
7.登录成功,保存用户信息

- (void)tencentDidLogin{
    NSLog(@"登录成功");
    //accessToken uid expiredin
    //需要保存信息
    [[NSUserDefaults standardUserDefaults] setObject:_oauth.accessToken forKey:@"accessToken"];
    [[NSUserDefaults standardUserDefaults] setObject:_oauth.openId forKey:@"openID"];
    [[NSUserDefaults standardUserDefaults] setObject:_oauth.expirationDate forKey:@"date"];
    
    NSLog(@"%@ %@ %@",_oauth.accessToken, _oauth.openId, _oauth.expirationDate);
    [_oauth getUserInfo];
}

- (void)tencentDidNotLogin:(BOOL)cancelled{
    NSLog(@"登录失败");
}

- (void)tencentDidNotNetWork{
    NSLog(@"没有网络");
}

- (void)getUserInfoResponse:(APIResponse *)response{
    //获取用户信息
    /*
     {
         头像:"figureurl_qq_1" = "http://thirdqq.qlogo.cn/g?b=oidb&k=6eUTyQ8Iv1nVXubkBRVV5w&s=40&t=1578448009";
         "figureurl_qq_2" = "http://thirdqq.qlogo.cn/g?b=oidb&k=6eUTyQ8Iv1nVXubkBRVV5w&s=100&t=1578448009";
         昵称:nickname = "\U4efb\U5c0f\U670b\U53cb";
     }
     */
    NSLog(@"%@",[response.jsonResponse objectForKey:@"nickname"]);
    NSLog(@"+++++++++%@",response.jsonResponse);
}

8.Appdelegate.m中

//系统有QQ的情况下调用
#import <TencentOpenAPI/QQApiInterface.h>
#import <TencentOpenAPI/TencentOAuth.h>
#import <TencentOpenAPI/sdkdef.h>

@interface AppDelegate ()<QQApiInterfaceDelegate>

@end

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{
    //accessToken
    [QQApiInterface handleOpenURL:url delegate:self];
    if (YES == [TencentOAuth CanHandleOpenURL:url]) {
        return [TencentOAuth HandleOpenURL:url];
    }
    return YES;
}

9.配置scheme
在这里插入图片描述

©️2020 CSDN 皮肤主题: 终极编程指南 设计师:CSDN官方博客 返回首页