iOS中常见的第三方登录

(一)QQ

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

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

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


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

接下来,配置info.plist文件

需要设置LSApplicationQueriesSchemes字段,如图

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

<key>LSApplicationQueriesSchemes</key>
	<array>
		<string>mqqapi</string>
		<string>mqq</string>
		<string>mqqOpensdkSSoLogin</string>
		<string>mqqconnect</string>
		<string>mqqopensdkdataline</string>
		<string>mqqopensdkgrouptribeshare</string>
		<string>mqqopensdkfriend</string>
		<string>mqqopensdkapi</string>
		<string>mqqopensdkapiV2</string>
		<string>mqqopensdkapiV3</string>
		<string>mqzoneopensdk</string>
		<string>wtloginmqq</string>
		<string>wtloginmqq2</string>
		<string>mqqwpa</string>
		<string>mqzone</string>
		<string>mqzonev2</string>
		<string>mqzoneshare</string>
		<string>wtloginqzone</string>
		<string>mqzonewx</string>
		<string>mqzoneopensdkapiV2</string>
		<string>mqzoneopensdkapi19</string>
		<string>mqzoneopensdkapi</string>
		<string>mqzoneopensdk</string>
	</array>


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

下面在代码中实现:

AppDelegate.m:

导入#import<TencentOpenAPI/TencentOAuth.h>

实现这两个方法

- (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 <TencentOpenAPI/TencentOAuth.h>

#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;

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值