iOS中常见的第三方登录

来源:互联网 发布:二阶矩阵 编辑:程序博客网 时间:2024/05/21 10:34

(一)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 = [[TencentOAuthalloc] initWithAppId:appidandDelegate:self];

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

    NSArray* permissions = [NSArrayarrayWithObjects:

                            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 = [_tencentOAuthgetUserInfo];

        

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

    

    returnnil;

}



0 0
原创粉丝点击