支付分享

iOS微信&QQ第三方登录

2018-01-04  本文已影响1207人  VENTI

微信第三方登录

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

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

上一篇下一篇

猜你喜欢

热点阅读