IOS 端APP 使用第三方登陆

本文详细介绍了如何在iOS应用中集成QQ、微信和微博的第三方登录功能。包括环境配置、URL Scheme设置以及在AppDelegate中的处理代码。通过授权获取用户信息,并提供了各个平台的SDK调用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目前非常多的app在登陆的时会使用第三方登陆,主要的方式是:qq、微信及微博。现在就这三种方式进行一下解释

一、   环境配置

三个SDK的环境配置都是比较简单的,只要按照官方提供的文档进行添加就可以,下面说下在配置过程中我遇到的问题

1、QQ

这里说一下比较需要注意的一点,在XCode6当中,plist文件把下面的属性值去掉了


这个由于qq的环境配置是需要的所以要加上

 

2、 微博

需要注意的是:在引入静态库的时候,不止要加上-objc ,同时也要将.a文件的路径添加进去,即:


这样可以保证程序不再崩溃

 

二、   URLscheme 配置

 

URL scheme 需要在qq、微信以及微博的开放平台上各自申请。

配置到项目当中

 

 

三、   项目代码运行

 

AppDelegate当中的配置:

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

{

    return [TencentOAuthHandleOpenURL:url]||[WXApi handleOpenURL:url delegate:self]|| [WeiboSDK handleOpenURL:url delegate:self];

}

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

{

    return [TencentOAuthHandleOpenURL:url] || [WXApi handleOpenURL:url delegate:self]|| [WeiboSDKhandleOpenURL:url delegate:self];

}

1、QQ

qq的SDK集成的比较好,在项目当中调用比较方便

跳转qq的APP时,添加代码:

self.oauth = [[TencentOAuthalloc]initWithAppId:QQAppKeyandDelegate:self];

    NSArray *_permissions = [NSArrayarrayWithObjects:

                              kOPEN_PERMISSION_GET_USER_INFO,

                              kOPEN_PERMISSION_GET_SIMPLE_USER_INFO,

                              kOPEN_PERMISSION_ADD_ALBUM,

                              kOPEN_PERMISSION_ADD_IDOL,

                              kOPEN_PERMISSION_ADD_ONE_BLOG,

                             kOPEN_PERMISSION_ADD_PIC_T,

                              kOPEN_PERMISSION_ADD_SHARE,

                              kOPEN_PERMISSION_ADD_TOPIC,

                              kOPEN_PERMISSION_CHECK_PAGE_FANS,

                              kOPEN_PERMISSION_DEL_IDOL,

                              kOPEN_PERMISSION_DEL_T,

                              kOPEN_PERMISSION_GET_FANSLIST,

                              kOPEN_PERMISSION_GET_IDOLLIST,

                              kOPEN_PERMISSION_GET_INFO,

                              kOPEN_PERMISSION_GET_OTHER_INFO,

                              kOPEN_PERMISSION_GET_REPOST_LIST,

                              kOPEN_PERMISSION_LIST_ALBUM,

                              kOPEN_PERMISSION_UPLOAD_PIC,

                              kOPEN_PERMISSION_GET_VIP_INFO,

                              kOPEN_PERMISSION_GET_VIP_RICH_INFO,

                              kOPEN_PERMISSION_GET_INTIMATE_FRIENDS_WEIBO,

                              kOPEN_PERMISSION_MATCH_NICK_TIPS_WEIBO,

                              nil];

    [self.oauthauthorize:_permissionsinSafari:NO];

 

添加回调方法- (void)tencentDidLogin;用户在同意授权后,SDK会回调这个方法,返回openidaccesstoken信息,[self.oauthgetUserInfo];可以获得用户的信息,包括昵称、头像等

- (void)tencentDidNotLogin:(BOOL)cancelled;用户取消授权或者是授权失败时调用此方法

ps:其中openid是与qq账号一一对应的,可以作为唯一标示符进行存储。

 

2、微博

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions;方法中添加

  [WeiboSDKenableDebugMode:YES];

[WeiboSDKregisterApp:WeiBoAppKey];

登陆时调用方法:

WBAuthorizeRequest *request = [WBAuthorizeRequestrequest];

    request.redirectURI =WeiBoRedirectUrl;

    [WeiboSDKsendRequest:request];

这样就可以跳转到微博app,在用户同意授权之后,返回当前app,传回useridaccessToken,根据这些信息,调用微博API的用户信息接口

https://api.weibo.com/2/users/show.json?uid=uid&source=source&access_token=access_token

返回信息包括用户的name,头像,userid等信息

 

3、微信
     微信第三方登陆相对来说比较麻烦
(1)首先初始化 

 kindsOfLog.wxSend = [[SendAuthReq alloc] init];

        kindsOfLog.wxSend.scope = @"snsapi_message,snsapi_userinfo,snsapi_friend,snsapi_contact";

        kindsOfLog.userInfoDic = [[NSMutableDictionary alloc] init];


(2)微信跳转

 [WXApi sendReq:req];

(3)微信授权成功后,返回app,会调用

- (void) onResp:(BaseResp *)resp;方法

在此方法中可以

 if([resp isKindOfClass:[SendAuthResp class]])

    {

        SendAuthResp *aresp = (SendAuthResp *)resp;

                

        if (aresp.errCode == 0) {

            [BaseProgressHUD showMsgOnView:self.window Msg:@"loading..." animated:YES];

            NSString *code = aresp.code;

//            code = @"123";

            NSDictionary *dic = @{@"code":code};

            [KindsOfLogIn sharedKindsOfLogIn].getDic = dic;

            [[NSNotificationCenter defaultCenter] postNotificationName:WXRELOADINFOMATION object:nil];

        }


    }


可以获取微信返回的code,根据这个值 调用接口

https://api.weixin.qq.com/sns/oauth2/access_token?appid=%@&secret=%@&code=%@&grant_type=authorization_code

可以获取微信返回的accesstoken 和 openid

(4)为了获取此授权微信号的信息,还需要调用

https://api.weixin.qq.com/sns/userinfo?access_token=%@&openid=%@ 接口,

这样可以获取微信号、昵称等信息


appdelegate 文件及整合的类 点此下载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值