将 LinkedIn Login 集成到 Swift 应用程序中
首先,下载领英 iOS SDK https://developer.linkedin.com/downloads#iossdk。在本示例中我将使用 1.07 稳定版本。我将遵循集成指南here https://developer.linkedin.com/docs/ios-sdk.
- 创建一个新的开发者应用 https://www.linkedin.com/developer/apps/new.
- 将 iOS 应用程序的捆绑包标识符添加到移动设备下的 LinkedIn 应用程序中。
- 将您的 LinkedIn 应用程序 ID 和 URL 方案添加到应用程序的 Info.plist 文件中。
- 将指定的 LinkedIn URL 方案和 ATS URL 列入白名单。
- 复制
linkedin-sdk.framework
库到您的应用程序。确保选择“如有必要,复制文件”和“为文件夹引用创建组”。
项目设置完成,现在让我们编写一些代码!
创建一个新的头文件,名为BridgingHeader.h
。在 Targets -> YourApp -> Build Settings -> Swift Compiler - Code Generation 下,添加MyApp/BridgingHeader.h
到“Objective-C 桥接头”。
In your BridgingHeader.h
,添加这两行:
#import <Foundation/Foundation.h>
#import <linkedin-sdk/LISDK.h>
在您的 AppDelegate.swift 中,添加以下代码来处理 OAuth URL 回调:
Swift 3:
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
if LISDKCallbackHandler.shouldHandle(url) {
return LISDKCallbackHandler.application(application, open: url, sourceApplication: sourceApplication, annotation: annotation)
}
return true
}
斯威夫特 2.x:
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
if LISDKCallbackHandler.shouldHandleUrl(url) {
return LISDKCallbackHandler.application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
}
return true
}
现在是时候登录用户了。在您的视图控制器中,假设您有一个“登录”按钮。你的IBAction
可能看起来像这样:
@IBAction func doLogin(sender: AnyObject) {
LISDKSessionManager.createSessionWithAuth([LISDK_BASIC_PROFILE_PERMISSION], state: nil, showGoToAppStoreDialog: true, successBlock: { (returnState) -> Void in
print("success called!")
let session = LISDKSessionManager.sharedInstance().session
}) { (error) -> Void in
print("Error: \(error)")
}
}
登录时,系统将要求用户使用您的应用程序进行身份验证:
如果用户允许,成功块将被调用,您可以获得有关经过身份验证的用户的信息。如果登录失败或用户不允许访问,则会调用失败块,您可以就发生的问题向用户发出警报。
要获取有关我们进行身份验证的用户的信息,请对用户的个人资料调用 GET 请求:
let url = "https://api.linkedin.com/v1/people/~"
if LISDKSessionManager.hasValidSession() {
LISDKAPIHelper.sharedInstance().getRequest(url, success: { (response) -> Void in
print(response)
}, error: { (error) -> Void in
print(error)
})
}
The response.data
将包含有关经过身份验证的用户的信息:
"{\n \"firstName\": \"Josh\",\n \"headline\": \"Senior Mobile Engineer at A+E Networks\",\n ... }"
阅读docs https://developer.linkedin.com/docs进一步了解您可以使用 API 执行的更多操作。
可以找到一个示例项目(我的应用程序 ID 已被混淆)here https://github.com/JALsnipe/LinkedInSwift.