Linkedin iOS身份验证需要启动Linkedin应用程序

时间:2015-11-07 01:58:18

标签: ios authentication sdk linkedin

我在将LinkedIn sdk与我的iOS应用集成时遇到问题。似乎验证过程要求我下载LinkedIn应用程序以连接LinkedIn。有没有办法在不必下载LinkedIn应用程序的情况下使用sdk? Apple出于这个原因拒绝该应用程序。我非常感谢能解决这个问题的任何提示。提前致谢

6 个答案:

答案 0 :(得分:1)

此页面上的其他答案日期为2015年11月6日,每个答案都指的是iOS9及其latest SDKs之前的流程。

使用他们的最新版本,这是一个"要求"安装移动应用程序以使单点登录进程正常工作。工作流程是:

  • 用户表示您的应用中的登录过程
  • 您的应用程序使用链接的应用程序SSO流程
  • 一旦登录完成,您就会收到一个回叫以继续您离开的地方。

就iOS应用程序而言,这是" required"利用SSO的方式。但是,在移动和非移动版本的应用程序之间共享授权令牌有一个小问题。

我在答案中分享了这个:
https://stackoverflow.com/a/34312931/1804181
https://stackoverflow.com/a/34451266/1804181
并且第一个答案的OP已成功实施此解决方案。

简单地说:

测试是否存在已关联的应用

  • 如果不存在:直接通过您的应用实施OAuth2
  • 如果它在那里:使用它或你的OAuth2实现(你可能会错误地使用他们的应用程序来获得你可能需要的应用程序的任何功能之间的链接能力)。

从而避免了要求安装应用程序,但如果是,则使用它。

答案 1 :(得分:0)

在LinkedIn iOS SDK网站上,它说它要求用户已经安装了官方的LinkedIn应用程序。您可以使用将UIWebView嵌入到您的应用程序中,并使用OAuth2身份验证流程对用户进行身份验证并获取必要的授权令牌。你也可以使用canOpenURL来检查用户是否有LinkedIn应用程序(iOS 9已经改变了它的工作原理)并提示他们安装应用程序。祝你好运,

答案 2 :(得分:0)

可以在此处找到关于将OAuth2登录从本地ios应用程序集成到linkedin的非常好的博文:http://www.oodlestechnologies.com/blogs/Linkedin-Integration-in-Native-iOS 它有点过时但我希望这会有所帮助。

答案 3 :(得分:0)

答案 4 :(得分:0)

完整的工作代码是否安装LinkedIn App。

如果您在项目中使用cocoapod而不是使用 -

pod 'IOSLinkedInAPI', '~> 2.0'

ViewController.h 中添加这些标题文件。

#import <linkedin-sdk/LISDK.h>
#import <LIALinkedInHttpClient.h>
#import <LIALinkedInApplication.h>
#import <AFHTTPRequestOperation.h>
@property (nonatomic, strong) LIALinkedInHttpClient *client;

在ViewController.m中

- (void)viewDidLoad {
    [super viewDidLoad];
  _client = [self client];
    }

    //ADD THESE METHOD

- (void)requestMeWithToken:(NSString *)accessToken 
    {
        [self.client GET:[NSString             stringWithFormat:@"https://api.linkedin.com/v1/people/~:(id,first-name,last-       name,maiden-name,email-address,formatted-name,phonetic-last-name,location:(country:(code)),industry,distance,current-status,current-share,network,skills,phone-numbers,date-of-birth,main-address,positions:(title),educations:(school-name,field-of-study,start-date,end-date,degree,activities))?oauth2_access_token=%@&format=json", accessToken] parameters:nil success:^(AFHTTPRequestOperation *operation, NSDictionary *result){

    NSLog(@"current user %@", result);

    }failure:^(AFHTTPRequestOperation *operation, NSError *error){

    NSLog(@"failed to fetch current user %@", error);
    }];
}

    - (LIALinkedInHttpClient *)client {
    LIALinkedInApplication *application = [LIALinkedInApplication     applicationWithRedirectURL:@"http://linkedin_oauth/success"     clientId:LINKEDIN_CLIENT_ID clientSecret:LINKEDIN_CLIENT_SECRET     state:@"760iz0bjh9gy71asfFqa" grantedAccess:@[@"r_basicprofile",     @"r_emailaddress"]];

        return [LIALinkedInHttpClient clientForApplication:application         presentingViewController:self.navigationController];
    }


- (void)loginWithLinkedin
 {

[self.client getAuthorizationCode:^(NSString *code)
 {
    [self.client getAccessToken:code success:^(NSDictionary *accessTokenData)     {
        NSString *accessToken = [accessTokenData         objectForKey:@"access_token"];
        [self requestMeWithToken:accessToken];
    }                   failure:^(NSError *error) {
        NSLog(@"Querying accessToken failed %@", error);
    }];
}                      cancel:^{
    NSLog(@"Authorization was cancelled by user");
}                     failure:^(NSError *error) {
    NSLog(@"Authorization failed %@", error);
}];

 // While Using Linkedin iOS SDK or add if-else to check the app installed or not
    [LISDKSessionManager
 createSessionWithAuth:[NSArray     arrayWithObjects:LISDK_BASIC_PROFILE_PERMISSION, LISDK_EMAILADDRESS_PERMISSION, nil]
 state:nil showGoToAppStoreDialog:YES successBlock:^(NSString *returnState)
 {
     NSLog(@"%s","success called!");
     LISDKSession *session = [[LISDKSessionManager sharedInstance] session];
 }
 errorBlock:^(NSError *error){
     NSLog(@"%s","error called!");
}

在您的Linkedin App设置页面中添加以上URL。

授权重定向网址:http://linkedin_oauth/success

我希望对你们有帮助。

答案 5 :(得分:0)

尝试使用LIExplorer库进行linkedin身份验证和REST API。它易于使用。 https://github.com/vijayviswas/LIExplorer