iOS中常见的第三方登录

(一)QQ

首先去官网申请应用,获得appid和key,地址http://wiki.open.qq.com/wiki

导入sdk,由于我使用的是cocoapods,所以省去了一些配置步骤,如果不用pods导入,请参照这篇文章配置:http://www.cnblogs.com/Hakim/p/5736886.html

pods导入后,还需要设置一下

iOS中常见的第三方登录_第1张图片

在url schemes中输入tencent+appid,如appid为111,就输入tencent111

接下来,配置info.plist文件

需要设置LSApplicationQueriesSchemes字段,如图

iOS中常见的第三方登录_第2张图片

,不想一个个输入的可以直接编辑

LSApplicationQueriesSchemes
	
		mqqapi
		mqq
		mqqOpensdkSSoLogin
		mqqconnect
		mqqopensdkdataline
		mqqopensdkgrouptribeshare
		mqqopensdkfriend
		mqqopensdkapi
		mqqopensdkapiV2
		mqqopensdkapiV3
		mqzoneopensdk
		wtloginmqq
		wtloginmqq2
		mqqwpa
		mqzone
		mqzonev2
		mqzoneshare
		wtloginqzone
		mqzonewx
		mqzoneopensdkapiV2
		mqzoneopensdkapi19
		mqzoneopensdkapi
		mqzoneopensdk
	


官方文档上还需要配置Bundle display name键,值就是在申请应用时填写的名称。

下面在代码中实现:

AppDelegate.m:

导入#import

实现这两个方法

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{

    return [TencentOAuthHandleOpenURL:url];

}


- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{

    return [TencentOAuthHandleOpenURL:url];

}


在你需要登录的页面实现:

导入#import

#define appid @"1105664615"

文件需要遵循协议<TencentSessionDelegate>

@property (nonatomic,strong) TencentOAuth *tencentOAuth;    //设置为属性,不然不能进入回调方法

在进入页面的时候实现:

_tencentOAuth = [[TencentOAuth alloc] initWithAppId:appid andDelegate:self];

在点击第三方登录按钮时实现:

    NSArray* permissions = [NSArray arrayWithObjects:

                            kOPEN_PERMISSION_GET_SIMPLE_USER_INFO,kOPEN_PERMISSION_GET_VIP_INFO,kOPEN_PERMISSION_GET_USER_INFO,

                            nil]; //数组值可以库文件中点击进去查看,有中文注释

    [_tencentOAuth authorize:permissionsinSafari:NO];

代理方法:

/**

 * 登录成功后的回调

 */

- (void)tencentDidLogin{

    /** Access Token凭证,用于后续访问各开放接口 */

    if (_tencentOAuth.accessToken) {

        

        //获取用户信息。 调用这个方法后,qqsdk会自动调用

        //- (void)getUserInfoResponse:(APIResponse*) response

        //这个方法就是 用户信息的回调方法。

        

        BOOL tmpBool = [_tencentOAuth getUserInfo];

        

        if (!tmpBool) {

            //未获取授权信息的提示

        }

        

    }else{

        

        NSLog(@"accessToken 没有获取成功");

    }

    

}

//这个方法能收到各种需要的信息,我列举了一些自己觉得有用的,其它的也可以自己去查看

- (void)getUserInfoResponse:(APIResponse*) response{

    NSLog(@"%@",_tencentOAuth.openId);

    NSLog(@"%@",_tencentOAuth.accessToken);

    NSLog(@"%@",response.jsonResponse[@"nickname"]);

    NSLog(@"%@",response.jsonResponse[@"province"]);

    NSLog(@"%@",response.jsonResponse[@"city"]);

    NSLog(@"%@",response.jsonResponse[@"gender"]);

    NSLog(@"%@",response.jsonResponse[@"figureurl_qq_2"]);

}


/**

 * 登录失败后的回调

 * \param cancelled 代表用户是否主动退出登录

 */

- (void)tencentDidNotLogin:(BOOL)cancelled{

    NSLog(@"失败");

}


/**

 * 登录时网络有问题的回调

 */

- (void)tencentDidNotNetWork{

    NSLog(@"网络错误");

}

//这个方法在文档中有提及,但是在qq的demo中并没有进入,不知道为什么,

- (NSArray *)getAuthorizedPermissions:(NSArray *)permissions withExtraParams:(NSDictionary *)extraParams{

    NSLog(@"111permissions = %@",permissions);

    NSLog(@"222extraParams = %@",extraParams);

    

    return nil;

}



你可能感兴趣的:(iOS中常见的第三方登录)