iOS linkedin身份验证

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

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

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

解决方法

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

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

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

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

创建一个名为BridgingHeader.h的新头文件.在目标下 – > YourApp – >构建设置 – > Swift编译器 – 代码生成,将MyApp / BridgingHeader.h添加到“Objective-C Bridging Header”.

在您的BridgingHeader.h中,添加以下两行:

#import <Foundation/Foundation.h>
#import <linkedin-sdk/LISDK.h>

在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
}

Swift 2.x:

func application(application: UIApplication,openURL url: NSURL,annotation: AnyObject) -> Bool {
    if LISDKCallbackHandler.shouldHandleUrl(url) {
        return LISDKCallbackHandler.application(application,openURL: url,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)")
    }
}

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

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)
    })
}

response.data将包含有关经过身份验证的用户的信息:

"{\n  \"firstName\": \"Josh\",\n  \"headline\": \"Senior Mobile Engineer at A+E Networks\",\n  ... }"

进一步阅读docs以获取有关API可以执行的更多操作.

可以在here找到示例项目(我的App ID被混淆).

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...