今天博主有一个第三方登录的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步.
第三方登录的方法很多,最直接的方法就是去各大开发者平台申请id之后看官方文档直接集成,当然也有偷懒的方法.类似博主,使用的是ShareSDK进行第三方登录,当然也可以使用友盟进行第三方登录.第三方登录主要是通过拉取第三方的授权,获得第三方平台的用户ID,作为参数上传到自己的服务器中,换取令牌,达到登录的目的.
1.申请appKey ,去要集成的各大开发者平台申请
2.导入ShareSDK
3.配置URL Schemes
在这里配置URL Schemes,identifier随便填,能区别其他应用即可,URL Schemes按开发者平台要求填,通常是简称+appKey
4.添加依赖库
必须添加的依赖库如下:
libicucore.dylib
libz.dylib
libstdc++.dylib
JavaScriptCore.framework
以下依赖库根据社交平台添加
新浪微博SDK依赖库
ImageIO.framework
QQ好友和QQ空间SDK依赖库(新注册腾讯开放平台帐号只支持SSO授权,只是老开发者才可以使用网页授权)
libstdc++.dylib
libsqlite3.dylib
5.在didFinishLaunch中注册appKey,初始化
/**ShareSDK 集成*/
[ShareSDK registerApp:@"appKey"];
#pragma mark-------
[ShareSDK connectSinaWeiboWithAppKey:@"appKey"
appSecret:@"APPSecret"
redirectUri:@"http://www.baidu.com"];
[ShareSDK connectQZoneWithAppKey:@"appKey"
appSecret:@"APPSecret"
qqApiInterfaceCls:[QQApiInterface class]
tencentOAuthCls:[TencentOAuth class]];
[WXApi registerApp:APP_ID];
[ShareSDK connectWeChatWithAppId:APP_ID //微信APPID
appSecret:APP_SECRET //微信APPSecret
wechatCls:[WXApi class]];
6.在openURL中回调
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
return [ShareSDK handleOpenURL:url
sourceApplication:sourceApplication
annotation:annotation
wxDelegate:self];
}
7. 在登录界面进行登录
#pragma mark -Weixin 登录
- (void)loginWeixinBtnClicked {
[ShareSDK getUserInfoWithType:ShareTypeWeixiTimeline
authOptions:_authOptions
result:^(BOOL result, id<ISSPlatformUser> userInfo, id<ICMErrorInfo> error) {
if (result)
{
//将从第三方平台获取的参数上传服务器
NSDictionary *dict = @{@"udid" : [userInfo uid],
@"client" : YORequest_Client
};
[self startTestLoginWithDictionary:dict withIsFrom:YES];
}
完成