iOS linkedin身份验证

Nie*_*ers 2 api linkedin ios swift linkedin-api

我开始在Swift中开发iOS应用程序.现在,我正处于创建登录系统所需的部分.但是我们需要来自人们的LinkedIn信息.

如何在iOS中使用OAuth2 API来实现此目的?

我已经在LinkedIn开发人员区域创建了一个应用程序,但现在我被卡住了.我得到了一些我需要使用的建议,UIWebView但我不知道这是如何工作的.

JAL*_*JAL 29

在Swift应用程序中集成LinkedIn登录

首先,下载LinkedIn iOS SDK.我将在这个例子中使用1.07稳定版本.我将在这里关注集成指南.

  1. 创建一个新的Developer Application.
  2. 将您的iOS应用程序的Bundle Identifier添加到Mobile下的LinkedIn应用程序中.
  3. 将您的LinkedIn应用ID和URL方案添加到您应用的Info.plist文件中.
  4. 将指定的LinkedIn URL方案和ATS URL列入白名单.
  5. linkedin-sdk.framework库复制到您的应用程序.确保选中"必要时复制文件"和"为文件夹引用创建组".

项目设置完成,现在让我们编写一些代码!

创建一个名为的新Header文件BridgingHeader.h.在Tar​​gets - > YourApp - > Build Settings - > Swift Compiler - Code Generation下,添加MyApp/BridgingHeader.h到"Objective-C Bridging Header".

在你的BridgingHeader.h,添加这两行:

#import <Foundation/Foundation.h>
#import <linkedin-sdk/LISDK.h>
Run Code Online (Sandbox Code Playgroud)

在AppDelegate.swift中,添加此代码以处理OAuth URL回调:

斯威夫特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
}
Run Code Online (Sandbox Code Playgroud)

Swift 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
}
Run Code Online (Sandbox Code Playgroud)

现在是时候登录用户了.在视图控制器中,假设您有一个"登录"按钮.你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)")
    }
}
Run Code Online (Sandbox Code Playgroud)

登录时,系统会要求用户对您的应用程序进行身份验证:

LinkedIn

如果用户允许,将调用成功块,您可以获取有关已验证用户的信息.如果登录失败或用户不允许访问,则将调用失败块,您可以提醒用户发生的问题.

要获取有关我们通过身份验证的用户的信息,请在用户的配置文件上调用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)
    })
}
Run Code Online (Sandbox Code Playgroud)

response.data将载有关于认证的用户信息:

"{\n  \"firstName\": \"Josh\",\n  \"headline\": \"Senior Mobile Engineer at A+E Networks\",\n  ... }"
Run Code Online (Sandbox Code Playgroud)

进一步阅读文档,了解可以使用API​​执行的更多操作.

可以在此处找到示例项目(我的App ID模糊处理).

  • 我执行这个步骤,当我点击我的loginWithLinkedIn按钮时LinkedIn应用程序从右向左滑动,然后(1秒钟后)我的应用程序从右向左滑动,没有任何反应.没有调用成功或错误.在这之后; 我尝试获取hasValidSession的请求,并再次成功没有被调用也没有错误.有什么建议吗? (3认同)