Swift版 share sdk 第三方登录facebook,推特,googleplus集成 全教程
最近在写一个swift项目,需要用到facebook,googleplus,推特,的第三方登录,另外一个做oc项目的同事和我说他的shareSDK第三方登录有一个坑一直解决不了,让我不要用sharesdk,但是楼主是一个有追求的人,毅然投身入sharesdk中。
第壹步:获取sharesdk appkey.
如何获取appkey:http://bbs.mob.com/forum.php?mod=viewthread&tid=8212&extra=page%3D1
第二步:下载sharesdk
下载链接:http://www.mob.com/downloadDetail/ShareSDK/ios 注意事项:sharesdk 的swift版 其实是通过桥接oc版的来实习的
第三步: 集成sdk,由于楼主只需要集成facebook,googleplus,推特,的第三方登录,桥接文件如下,官方文档中第5步有个小坑
集成教程:http://wiki.mob.com/swift-调用-sharesdk/
桥接文件代码:
#ifndef MoveApp_Bridging_Header_h #define MoveApp_Bridging_Header_h #import <ShareSDK/ShareSDK.h> #import <ShareSDKConnector/ShareSDKConnector.h> #import <FacebookConnector/FacebookConnector.h> #import <GooglePlusConnector/SSDKGooglePlusControllerStyle.h> #endif /* MoveApp_Bridging_Header_h */
第四步:配置AppDelegate.swift文件,直接上代码:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
ShareSDK.registerApp("你的sharesdkappkey", activePlatforms: [ SSDKPlatformType.typeFacebook.rawValue, SSDKPlatformType.typeTwitter.rawValue, SSDKPlatformType.typeGooglePlus.rawValue, ], onImport: { (platform : SSDKPlatformType) in switch platform { default: break } }) { (platform : SSDKPlatformType, appInfo : NSMutableDictionary?) in switch platform { case SSDKPlatformType.typeFacebook: //设置Facebook应用信息,其中authType设置为只用SSO形式授权 appInfo?.ssdkSetupFacebook(byApiKey: "107704292745179", appSecret : "38053202e1a5fe26c80c753071f0b573", authType : SSDKAuthTypeBoth) case SSDKPlatformType.typeTwitter: //设置Twitter应用信息 appInfo?.ssdkSetupTwitter(byConsumerKey: "LRBM0H75rWrU9gNHvlEAA2aOy", consumerSecret : "gbeWsZvA9ELJSdoBzJ5oLKX0TU09UOwrzdGfo9Tg7DjyGuMe8G", redirectUri : "http://www.baidu.com") //设置gooleplus应用信息 case SSDKPlatformType.typeGooglePlus: appInfo?.ssdkSetupGooglePlus(byClientID: "232554794995.apps.googleusercontent.com", clientSecret: "可不填", redirectUri: "http://localhost"); break default: break } }
return true } }
第五部:控制器点击按钮授权登录获取令牌
func OAuth(sender: UIButton) { //授权 ShareSDK.authorize(SSDKPlatformType.需要的第三方类型, settings: nil, onStateChanged: { (state : SSDKResponseState, user : SSDKUser?, error : Error?) -> Void in switch state{ case SSDKResponseState.success: print("授权成功,用户信息为\(user)\n ----- 授权凭证为\(user?.credential)") case SSDKResponseState.fail: print("授权失败,错误描述:\(error)") case SSDKResponseState.cancel: print("操作取消") default: break } }) }
全教程终
注意事项:这时候社交平台web授权窗口仍然不通有如下可能:
redirectUri 与 该第三方开发者应用的回调地址不同,或者配置错误
或者社交平台appkey 和 secrt 有错误.
最后:
官方的开发者应用设置网址:各社交平台申请AppKey的网址及申请流程汇总