IOS开发入门iOS 第三方登录(QQ 微信 新浪微博)
白羽 2019-07-10 来源 :网络 阅读 887 评论 0

摘要:本文将带你了解IOS开发入门iOS 第三方登录(QQ 微信 新浪微博),希望本文对大家学IOS有所帮助。

    本文将带你了解IOS开发入门iOS 第三方登录(QQ 微信 新浪微博),希望本文对大家学IOS有所帮助。

IOS开发入门iOS 第三方登录(QQ 微信 新浪微博)

一、QQ登录
   1、登录腾讯开放平台,创建一个应用,获取APP_KEY和APP_ID
   2、下载对应的SDK
   
   3、下载 IOS_API%E8%B0%83%E7%94%A8%E8%AF%B4%E6%98%8E">iOS SDK环境搭建
   1、导入SDK,配置工程
   1、下载SDK到本地后,将SDK拖入工程中
   
   2、添加所需的依赖库
   ?12345678Security.frameworkSystemConfiguration.frameworkCoreGraphics.FrameworkCoreTelephony.frameworklibiconv.tdblibsqlite3.tdblibstdc++.tdblibz.tdb
   3、在工程配置中的“Build Settings”一栏中找到“Linking”配置区,给“Other Linker  Flags”配置项添加属性值“-fobjc-arc”
   
   2 、添加项目代码
   1、添加URL SChemes,新的scheme = tencent + appid。
   
   2、在plist文件中,设置ATS
   
   3、在plist文件中,添加白名单
   ?1234567891011121314151617181920212223242526LSApplicationQueriesSchemes     mqqapi    mqq    mqqOpensdkSSoLogin    mqqconnect    mqqopensdkdataline    mqqopensdkgrouptribeshare    mqqopensdkfriend    mqqopensdkapi    mqqopensdkapiV2    mqqopensdkapiV3    mqzoneopensdk    wtloginmqq    wtloginmqq2    mqqwpa    mqzone    mqzonev2    mqzoneshare    wtloginqzone    mqzonewx    mqzoneopensdkapiV2    mqzoneopensdkapi19    mqzoneopensdkapi    mqqbrowser    mttbrowser
   添加之后如下图:
   
   2、在AppDelegate.m 中添加代码:
   ?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687#import  "AppDelegate.h"#import <tencentopenapi  tencentoauth.h="">#import <tencentopenapi  qqapiinterface.h=""> @interface AppDelegate  ()<tencentsessiondelegate> @property (nonatomic, strong)  TencentOAuth *tencentOAuth; @end @implementation  AppDelegate  - (BOOL)application:(UIApplication *)application  didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  {    // Override point for customization after  application  launch.     //初始化SDK     _tencentOAuth  = [[TencentOAuth alloc] initWithAppId:@"222222"  andDelegate:self];     //设置应用需要用户授权的API列表    NSArray  *_permissions =  [NSArray arrayWithObjects:@"get_user_info",  @"get_simple_userinfo", @"add_t",  nil];    //调用SDK登录    [_tencentOAuth  authorize:_permissions inSafari:NO];    [_tencentOAuth  accessToken] ;    [_tencentOAuth openId]  ;      return YES;} //登录成功-  (void)tencentDidLogin{    NSLog(@"登录完成");     if  (_tencentOAuth.accessToken && 0 != [_tencentOAuth.accessToken  length]) {        //  记录登录用户的OpenID、Token以及过期时间        NSLog(@"%@",_tencentOAuth.accessToken);    }  else {        NSLog(@"登录不成功  没有获取accesstoken");    }} //非网络错误导致登录失败-(void)tencentDidNotLogin:(BOOL)cancelled{    if  (cancelled)  {        NSLog(@"用户取消登录");    }  else  {        NSLog(@"登录失败");    }} //网络错误导致登录失败-(void)tencentDidNotNetWork{    NSLog(@"无网络连接,请设置网络"); }  //  处理来至QQ的请求 - (void)onReq:(QQBaseReq *)req{   NSLog(@"  ----req %@",req);}  //处理来至QQ的响应- (void)onResp:(QQBaseResp  *)resp{    NSLog(@" ----resp  %@",resp);} //处理QQ在线状态的回调 -  (void)isOnlineResponse:(NSDictionary *)response{ } -  (BOOL)application:(UIApplication *)application openURL:(NSURL *)url  sourceApplication:(NSString *)sourceApplication  annotation:(id)annotation{    return [TencentOAuth  HandleOpenURL:url];} - (BOOL)application:(UIApplication *)application  handleOpenURL:(NSURL *)url{    return [TencentOAuth HandleOpenURL:url];} </tencentsessiondelegate></tencentopenapi></tencentopenapi>
   效果图:
   
   3、错误处理
   我在集成中遇到了一个配置错误的问题,如下图:
   
   解决办法:我在QQ开放平台上注册了一个应用,获得了APPID,但是我并没有提交审核,有可能是没有审核的APPID不可用(推测而已),你可以换一个腾讯提供的APPID:222222。<喎�"/kf/ware/vc/"  target="_blank"  class="keylink">vcD4NCjxwPjxpbWcgYWx0PQ=="这里写图片描述"  src="/uploadfile/Collfiles/20161103/201611030937211368.png"  title="\" />
   ?12//初始化SDK    _tencentOAuth = [[TencentOAuth alloc]  initWithAppId:@"222222" andDelegate:self];
   DEMO下载
   就是这两个地方,设置对了,就可以了。
   二、微信登录
   1、登录微信开放平台,创建一个应用,获取APP_KEY和APP_ID
   2、下载对应的SDK
   
   1、导入SDK,配置工程
   1、将下载好的SDK拖入工程
   2、添加依赖库
   ?1234567SystemConfiguration.frameworklibz.tdblibsqlite3.0.tdblibc++.tdbSecurity.frameworkCoreTelephony.frameworkCFNetwork.framework
   如果某些依赖库已经有了,就不需要重复添加了。
   3、在你的工程文件中选择Build Setting,在”Other Linker Flags”中加入”-Objc -all_load”
   
   4、在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type“添加“URL  scheme”为你所注册的应用程序id
   
   2、添加相关代码
   1、在AppDelegate.m 中导入头文件
   ?1#import "WXApi.h"
   2、添加协议:
   ?1WXApiDelegate
   3、注册微信SDK:
   ?1234567- (BOOL)application:(UIApplication *)application  didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  {    // Override point for customization after  application launch.     [WXApi  registerApp:@"wxd477edab60670232"];     return  YES;}
   4、页面跳转处理
   ?123456789101112131415161718192021- (BOOL)application:(UIApplication  *)application openURL:(NSURL *)url sourceApplication:(NSString  *)sourceApplication  annotation:(id)annotation{     if([[url scheme]  hasPrefix:@"tencent"])  {        return [TencentOAuth  HandleOpenURL:url];     }else if([[url scheme]  hasPrefix:@"wx"]){        return  [WXApi handleOpenURL:url  delegate:self];    }    return  YES;  } - (BOOL)application:(UIApplication *)application  handleOpenURL:(NSURL *)url{     if([[url scheme]  hasPrefix:@"tencent"])  {        return [TencentOAuth  HandleOpenURL:url];    } else if([[url scheme]  hasPrefix:@"wx"])  {        return [WXApi  handleOpenURL:url  delegate:self];    }    return  YES;}
   如果项目中集成了多种第三方登录的,需要进行判断。
   5、发送请求微信登录
   在你需要调用微信登录的按钮方法中添加如下代码:
   ?12345SendAuthReq* req = [[SendAuthReq alloc] init]; req.scope =  @"snsapi_message,snsapi_userinfo,snsapi_friend,snsapi_contact"; //  @"post_timeline,sns"    req.state =  @"xxx"; [WXApi sendAuthReq:req viewController:self  delegate:nil];
   效果图
   
   Demo下载
   三、新浪微博登录
   1、登录新浪微博开放平台,创建一个应用,获取APPID和APPKEY.
   2、下载对应的SDK
   1、导入SDK,配置工程
   1、下载好SDK后,将SDK拖入工程
   
   2、在工程中引入静态库之后,需要在编译时添加-ObjC,Target->Build Settings->Linking 下 Other  Linker Flags 添加 -ObjC。(如果添加过了,就不需要重复添加了)
   3、添加依赖库 (如果某些依赖库添加过了,就不需要重复添加了)
   ?1234567891011QuartzCore.frameworkImageIO.frameworkSystemConfiguration.frameworkSecurity.frameworkCoreTelephony.frameworkCoreText.frameworkUIKit.frameworkFoundation.frameworkCoreGraphics.frameworklibz.tdblibsqlite3.tdb
   4、添加URL Schemes
   
   2、添加相关代码
   在AppDelegate.m 在添加头文件
   ?1#import "WeiboSDK.h"
   添加协议
   ?1WeiboSDKDelegate
   ?1234567891011121314151617181920212223242526272829303132-  (BOOL)application:(UIApplication *)application  didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  {    // Override point for customization after  application launch.     [WeiboSDK  registerApp:@"2045436852"];     return  YES;} - (BOOL)application:(UIApplication *)application openURL:(NSURL  *)url sourceApplication:(NSString *)sourceApplication  annotation:(id)annotation{     if([[url scheme]  hasPrefix:@"tencent"])  {        return [TencentOAuth  HandleOpenURL:url];    }else if([[url scheme]  hasPrefix:@"wx"]){        return  [WXApi handleOpenURL:url delegate:self];    } else  {        return [WeiboSDK handleOpenURL:url  delegate:self];    }  } -  (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL  *)url{     if([[url scheme]  hasPrefix:@"tencent"]) {        return  [TencentOAuth HandleOpenURL:url];    } else if([[url  scheme] hasPrefix:@"wx"])  {        return [WXApi  handleOpenURL:url delegate:self];    } else  {        return [WeiboSDK  handleOpenURL:url  delegate:self];    }    return  YES;}
   在你需要调用新浪微博登录的按钮方法中添加代码:
   ?12345WBMessageObject *message = [WBMessageObject  message];   message.text =  @"测试使用";    WBSendMessageToWeiboRequest  *request = [WBSendMessageToWeiboRequest  requestWithMessage:message];   [WeiboSDK  sendRequest:request];
   新浪微博登录需要用真机测试。    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之IOS频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程