iOS微信&QQ第三方登录

微信第三方登录

一、注册微信开放平台开发账号

1. 微信开放平台网站:微信开放平台

2. 注册开发者账号,按步骤填写相关信息

3. 在管理中心创建移动应用,填写相关信息,信息完整填写完成后提交审核,登录功能申请要每年缴纳300元费用,

审核通过后状态如下图

如需使用公众号获取用户openID进行微信推广发送消息,需绑定公众号。绑定后用公众号开发,可以通过openID获取统一unionid

获取unionid接口 get请求,通过后台去获取unionid,前端只返回code给后台

https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx56789b6e2f5c7e5a&secret=0d0a1a6d9b8ab9fa8d7a05f87678e56b&code=071DHMXQ0quIJ82kRgWQ0jCEXQ0DHMX7&grant_type=authorization_code

返回数据

{"access_token":"5_meXCqPOcoSonfFUi2FZFD4ds9c5OFyqLF_OT9FdffT7xx9krOSmmsqRUh0KIHtremAOtntD5mRkBjLFCG3j34Y7fC6qWuQUqnkPjak6iS5c","expires_in":7200,"refresh_token":"5_mWWzmal5Z23PfansrtScuVTNZASzeDUeOlDLmvyHtfVzqYGVjjUUVAUhU1HpxYIXR9O1xPSRtapElhb4-TS3WcJogVjjtrebpnm2VzXek6Y","openid":"oLo5k1EhHGAC3Mcm9m-eX6WuUacY","scope":"snsapi_userinfo","unionid":"ooGK5ww0RTiVicivaIyvXsOw7ba4"}

二、微信第三方登录工程配置

1. 通过Cocoapods集成微信登录SDK

pod 'WechatOpenSDK'  通过Cocoapods 将微信登录最新版本集成到工程,这样也利于后续的版本管理。

2. 微信登录相关配置

配置URL schema

添加微信平台Scheme白名单

wechat,

weixin

三、微信登录详细代码

#import "AppDelegate.h"

#import <WXApi.h>

@interface AppDelegate ()

@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

  [WXApi registerApp:@"wx3e655454f7cfbb0b0"]; 

  return YES;

}

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options

{

    return [WXApi handleOpenURL:url delegate:self];

}

- (void)onResp:(BaseResp *)resp

{

    switch (resp.errCode)

    {

        case 0:

        {

            // 用户同意 获取code

            SendAuthResp *yuResp = (SendAuthResp *)resp;

            NSLog(@"code == %@",yuResp.code);

        }

            break;


        case -4://用户拒绝授权

        {

            NSLog(@"您拒绝授权微信登录");

        }

            break;


        case -2://用户取消

        {

            NSLog(@"您取消了授权微信登录");

        }

            break;

    }

}


#import "ViewController.h"

#import <WXApi.h>

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

    [super viewDidLoad];


    UIButton *weChatLoginBtn = [[UIButton alloc]initWithFrame:CGRectMake(50, 100, 80, 44)];

    weChatLoginBtn.backgroundColor = [UIColor blackColor];

    [weChatLoginBtn setTitle:@"QQ Login" forState:UIControlStateNormal];

    [weChatLoginBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

    [weChatLoginBtn addTarget:self action:@selector(weChatLoginBtnAction) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:weChatLoginBtn];

}

- (void)weChatLoginBtnAction

{

    if ([WXApi isWXAppInstalled])

    {

        SendAuthReq *weChatReq = [[SendAuthReq alloc]init];

        weChatReq.scope = @"snsapi_userinfo";

        weChatReq.openID = @"wx3e655454f7cfbb0b0";

        weChatReq.state = @"1245";

        [WXApi sendReq:weChatReq];

    }

    else

    {

        NSLog(@"您未安装微信APP,请先安装");

    }

}

@end


QQ第三方登录

一、注册腾讯开放平台开发账号

1. 腾讯开放平台网站:腾讯开放平台

2. 注册开发者账号,按步骤填写相关信息

使用QQ号登录

选择进入管理中心,注册类型分个人、公司。个人需要上传身份证照片,公司需要上传公司营业执照照片。

进入注册界面按步骤填写相关信息

3. 在管理中心选择iOS栏创建应用,填写相关信息

点击创建应用,按步骤填写相关信息,填写完成后提交审核

配置APP自定义 URL schema 方法,格式范例:783euu://,通过配置好的URL schema可以通过其他APP或者网页中访问783euu://此地址就可以直接跳转到自己的APP

可以通过方法打开相应的APP

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"783euu://"]];

二、QQ第三方登录工程配置

1. 准备工作

1.1 确认腾讯开放平台审核是否通过,通过状态显示已获取QQ登录能力

1.2 相同开发者账号下的不同appid应用打通返回相同UnionID

各客户端APP ID是不一样的,所以返回的appid是不一样的,所以需要向腾讯申请统一各APP ID返回相同UnionID;先下载申请表格,表格下载和说明地址:申请流程&表格下载

获取unionid接口 get请求,通过后台去获取unionid,前端只返回access_token给后台

https://graph.qq.com/oauth2.0/me?access_token=9898CA1C13CBE60A7CDFB2CEF042FC5E&unionid=1

返回数据

callback( {"client_id":"1106628010","openid":"80A3310DAA0263AD46E0A45389B820B2","unionid":"UID_B83B6F5E1FD2F039923A52D5D367F3E3"} );

2. 通过Cocoapods集成QQ登录SDK

pod 'TencentOpenAPI-Unofficial', '~> 3.3.0'  通过Cocoapods将QQ登录最新版本集成到工程,这样也利于后续的版本管理。

3. QQ登录相关配置

配置URL schema

添加QQ平台Scheme白名单

LSApplicationQueriesSchemes

mqqOpensdkSSoLogin,

mqqopensdkapiV2,

mqqopensdkapiV3,

wtloginmqq2,

mqq,

mqqapi

三、QQ登录详细代码

AppDelegate配置代码

#import "ViewController.h"

#import <TencentOpenAPI/QQApiInterface.h>

#import <TencentOpenAPI/TencentOAuth.h>

@interface ViewController ()

@property (nonatomic,strong) TencentOAuth *tencentOAuth;

@end

@implementation ViewController

- (void)viewDidLoad {

    [super viewDidLoad];


    UIButton *qqLoginBtn = [[UIButton alloc]initWithFrame:CGRectMake(50, 100, 80, 44)];

    qqLoginBtn.backgroundColor = [UIColor blackColor];

    [qqLoginBtn setTitle:@"QQ Login" forState:UIControlStateNormal];

    [qqLoginBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

    [qqLoginBtn addTarget:self action:@selector(qqLoginBtnAction) forControlEvents:UIControlEventTouchUpInside];

   [self.view addSubview:qqLoginBtn];

}

- (void)qqLoginBtnAction

{

    self.tencentOAuth = [[TencentOAuth alloc]initWithAppId:@"1108888010" andDelegate:self];

    NSMutableArray *permission = [@[] mutableCopy];

    permission = [NSMutableArray arrayWithObjects:@"get_user_info",@"get_simple_userinfo",nil];

    [self.tencentOAuth authorize:permission inSafari:NO];

}

#pragma mark --------- qq登录状态回调  TencentSessionDelegate------

- (void)tencentDidLogin

{

    if (!_tencentOAuth.accessToken)

    {

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

        [self.tencentOAuth getUserInfo];

    }

    else

    {

        NSLog(@"登录失败!没有获取到accessToken");

    }

}

/**

* 登录失败后的回调

*/

- (void)tencentDidNotLogin:(BOOL)cancelled

{

    if (cancelled)

    {

        NSLog(@"用户取消登录");

    }

    else

    {

        NSLog(@"登录失败");

    }

}

/**

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

*/

- (void)tencentDidNotNetWork

{

    NSLog(@"没有网络,无法登录");

}

/**

* 取得用户信息的回调

*/

- (void)getUserInfoResponse:(APIResponse *)response

{

    NSLog(@"%@",response.jsonResponse);

}

@end

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,752评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,100评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,244评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,099评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,210评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,307评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,346评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,133评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,546评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,849评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,019评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,702评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,331评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,030评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,260评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,871评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,898评论 2 351

推荐阅读更多精彩内容