我一直在使用以下SDK来执行LinkedIn到iOS的集成以及从iDevices共享文章。IOSLinkedInAPI:无法与LinkedIn API共享文章
SDK可以在这里找到:https://github.com/jeyben/IOSLinkedInAPI
在这段代码中,我找不到合适的示例代码,但是,但是我已经写了一些代码,通过它后可以共享。这里是我的代码:
在代码中,我只有一个viewcontroller,其中我只有两个按钮,1)Linked In Account [此按钮用于呈现登录控制器并获取用户成功登录到帐户] 2 )共享[允许用户在请求失败共享代表登录的用户内容]
ViewController.h
#import <UIKit/UIKit.h>
#import "LIALinkedInApplication.h"
#import "LIALinkedInHttpClient.h"
@interface ViewController : UIViewController
@property (nonatomic, strong) LIALinkedInHttpClient *client;
- (IBAction) linkedInClicked:(id)sender;
- (void)requestMeWithToken:(NSString *)accessToken;
@end
ViewController.m
#import "ViewController.h"
@interface ViewController()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
LIALinkedInApplication *application = [LIALinkedInApplication applicationWithRedirectURL:@"http://www.google.com" clientId:@"w57zqiw6cv73" clientSecret:@"Pj5MVxtkpbefau1v" state:@"something" grantedAccess:@[@"r_fullprofile", @"r_network", @"rw_nus"]];
self.client = [LIALinkedInHttpClient clientForApplication:application presentingViewController:nil];
}
- (IBAction) linkedInClicked:(id)sender { // Login into the account
[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(@"Quering accessToken failed %@", error);
}];
} cancel:^{
NSLog(@"Authorization was cancelled by user");
} failure:^(NSError *error) {
NSLog(@"Authorization failed %@", error);
}];
}
- (IBAction) postMessage :(id)sender { // Post via logged in account, so, first go login and then share content
NSString *strURL = @"https://api.linkedin.com/v1/people/~/shares";
NSMutableDictionary *contents=[[NSMutableDictionary alloc] init];
[contents setValue:@"description goes here" forKey:@"description"];
[contents setValue:@"www.google.com" forKey:@"submitted-url"];
[contents setValue:@"title goes here" forKey:@"title"];
NSMutableDictionary *visible=[[NSMutableDictionary alloc] init];
[visible setValue:@"anyone" forKey:@"code"];
NSMutableDictionary *updatedic=[[NSMutableDictionary alloc] init];
[updatedic setObject:visible forKey:@"visibility"];
[updatedic setObject:contents forKey:@"content"];
[updatedic setValue:@"Check out the LinkedIn Share API!" forKey:@"comment"];
//[updatedic setValue:@"json" forKey: @"x-li-format"];
[self.client POST:strURL parameters:updatedic success:^(AFHTTPRequestOperation *operation, NSDictionary *dict) {
NSLog(@"Successfully posted", nil);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Failed post", nil);
}];
}
- (void)requestMeWithToken:(NSString *)accessToken {
[self.client GET:[NSString stringWithFormat:@"https://api.linkedin.com/v1/people/~?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);
}];
}
为了使这个应用程序的工作,从上面的SDK下载内容和每一个需要的文件添加到项目中。
当我尝试登录该应用程序,我得到成功的消息,但在那之后,当我尝试共享任何职务,如上面的代码中所描述的,我得到的失败,看看什么是控制台:
Printing description of error:
Error Domain=AFNetworkingErrorDomain Code=-1011 "Request failed: unauthorized (401)" UserInfo=0x8a6d500 {NSErrorFailingURLKey=https://api.linkedin.com/v1/people/~/shares, NSLocalizedDescription=Request failed: unauthorized (401), NSUnderlyingError=0x8ab1bd0 "Request failed: unacceptable content-type: text/xml", AFNetworkingOperationFailingURLResponseErrorKey=<NSHTTPURLResponse: 0x8a1f5f0> { URL: https://api.linkedin.com/v1/people/~/shares } { status code: 401, headers {
Connection = "keep-alive";
"Content-Encoding" = gzip;
"Content-Type" = "text/xml;charset=UTF-8";
Date = "Tue, 20 May 2014 09:38:01 GMT";
Server = "Apache-Coyote/1.1";
"Transfer-Encoding" = Identity;
Vary = "*";
"Www-Authenticate" = "OAuth realm=\"https://api.linkedin.com\"";
"X-LI-UUID" = "wUQ+CTiK5WDItDrWLbZJFQ==";
"X-Li-Fabric" = "PROD-ELA4";
"X-Li-Pop" = "PROD-ELA4";
"x-li-format" = xml;
"x-li-request-id" = 30K08X3IL7;
} }}
我有尝试了很多关于AFNetworking,LinkedIn授权,未经授权的访问等,但找不到任何东西。让我知道如果你们中的任何人都知道这件事,或者建议我为LinkedIn iPhone SDK提供其他选项。
同样的问题任何解决方案 – mychar
你有没有想过这个? – user3344977
我已经停止了这个项目:( –