LinkedIn iOS中的集成:邀请API不起作用

我正在尝试将LinkedIn集成到我的iOS应用程序中,在那里我需要进行身份validation,然后获取个人资料的详细信息,并从我的应用程序发布到LinkedIn。 我使用这个示例项目LinkedIn OAuth Sample Client作为参考成功完成了所有这些工作,我做了一些修改,一切工作都很顺利。 我也使用LinnkedIn API的细节来实现这一点。 接下来, 我需要从同一个应用程序发送邀请来连接LinkedIn 。 我尝试使用Invitataion API 。

这是我的代码片段:

-(void)sendInvitationToconnectTo:(NSString *)emailAddress withMessage:(NSString *)text { NSURL *url = [NSURL URLWithString:@"http://api.linkedin.com/v1/people/~/mailbox"]; OAMutableURLRequest *request = [[OAMutableURLRequest alloc] initWithURL:url consumer:oAuthLoginView.consumer token:oAuthLoginView.accessToken callback:nil signatureProvider:[[OAHMAC_SHA1SignatureProvider alloc] init]]; [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; NSDictionary *temp=[[NSDictionary alloc]initWithObjectsAndKeys:@"/people/email=userName@gmail.com",@"_path",@"userName1",@"first-name",@"userName2",@"last-name", nil]; NSDictionary *temp2=[[NSDictionary alloc] initWithObjectsAndKeys:temp,@"person",nil]; NSArray *arr2=[[NSArray alloc]initWithObjects:temp2, nil]; NSDictionary *value=[[NSDictionary alloc]initWithObjectsAndKeys:arr2,@"values", nil]; NSDictionary *dict3=[[NSDictionary alloc]initWithObjectsAndKeys:@"friend",@"connect-type",nil]; NSDictionary *dict4=[[NSDictionary alloc] initWithObjectsAndKeys:dict3,@"invitation-request", nil]; NSDictionary *dict=[[NSDictionary alloc]initWithObjectsAndKeys:dict4,@"item-content",@"Say yes!",@"body",@"Invitation to connect.",@"subject",value,@"recipients", nil]; NSString *updateString = [dict JSONString]; NSLog(@"updateString : %@",updateString); [request setHTTPBodyWithString:updateString]; [request setHTTPMethod:@"POST"]; OADataFetcher *fetcher = [[OADataFetcher alloc] init]; [fetcher fetchDataWithRequest:request delegate:self didFinishSelector:@selector(sendRequestApiCallResult:didFinish:) didFailSelector:@selector(sendRequestApiCallResult:didFail:)]; [request release]; } - (void)sendRequestApiCallResult:(OAServiceTicket *)ticket didFinish:(NSData *)data { NSLog(@"invitation sent"); [self networkApiCall]; } - (void)sendRequestApiCallResult:(OAServiceTicket *)ticket didFail:(NSData *)error { NSLog(@"%@",[error description]); } 

而我的JSONstring看起来像这样:

{“body”:“说是!”,“subject”:“邀请连接”,“recipients”:{“values”:[{“person”:{“first-name”:“userName1”,“last -name “:” USERNAME2" , “_path”: “/ people/email=userName@gmail.com”}}]}, “项内容”:{ “邀请请求”:{ “连接型”:”朋友”}}}

发送邀请时, 我没有得到任何错误 ,当我debugging, sendRequestApiCallResult:(OAServiceTicket *)ticket didFinish:(NSData *)data方法被调用显示邀请发送文本。 但这个问题是目标LinkedIn用户没有得到任何请求!

任何人都可以帮助我呢? 有什么我在做我的代码错了吗?

NB我经历了下面提到的两个链接来获得解决scheme,尝试了解决scheme,但徒劳无功。

1. 邀请API – 被401(iOS和OAuthConsumer)阻挡 – 已解决
2. linkedin连接API给错误401 – iPhone

和我得到的NSURLResponse是401!

编辑::解决它自己。 看到我的答案在下面。

很高兴告诉大家,经过长达4天的连续研究,我解决了这个问题! 我从这个Linkedin主题获得了解决scheme

你只需要在代码中进行一些更改:

 NSURL *url = [NSURL URLWithString:@"http://api.linkedin.com/v1/people/~/mailbox"]; OAMutableURLRequest *request = [[OAMutableURLRequest alloc] initWithURL:url consumer:oAuthLoginView.consumer token:oAuthLoginView.accessToken callback:nil signatureProvider:nil]; [request setHTTPMethod:@"POST"]; NSString *messageToPerson = @"/people/email=target@gmail.com"; NSDictionary *person = [[NSDictionary alloc] initWithObjectsAndKeys:[[[NSDictionary alloc] initWithObjectsAndKeys:messageToPerson,@"_path",@"TargetFirstName",@"first-name",@"TargetSecondName",@"last-name",nil] autorelease], @"person",nil]; NSArray *valueArray = [[NSArray alloc] initWithObjects:person,nil]; NSDictionary *values = [[NSDictionary alloc] initWithObjectsAndKeys:valueArray,@"values", nil]; NSDictionary *ir = [[NSDictionary alloc] initWithObjectsAndKeys:[[[NSDictionary alloc] initWithObjectsAndKeys:@"friend",@"connect-type",nil] autorelease], @"invitation-request",nil]; NSDictionary *ic = [[NSDictionary alloc] initWithObjectsAndKeys:ir,@"item-content", nil]; NSDictionary *update = [[NSDictionary alloc] initWithObjectsAndKeys:values,@"recipients",@"Invitation",@"subject",@"ConnectWithMe",@"body", ir, @"item-content", nil]; [request setValue:@"json" forHTTPHeaderField:@"x-li-format"]; [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; NSLog(@"%@",[update description]); NSString *updateString = [update JSONString]; [request prepare]; [request setHTTPBodyWithString:updateString]; OADataFetcher *fetcher = [[OADataFetcher alloc] init]; [fetcher fetchDataWithRequest:request delegate:self didFinishSelector:@selector(postUpdateApiCallResult:didFinish:) didFailSelector:@selector(postUpdateApiCallResult:didFail:) withId:1]; [request release]; 

oAdata OADataFetcher.m

 - (void)fetchDataWithRequest:(OAMutableURLRequest *)aRequest delegate:(id)aDelegate didFinishSelector:(SEL)finishSelector didFailSelector:(SEL)failSelector withId:(int)idtm { [request release]; request = [aRequest retain]; delegate = aDelegate; didFinishSelector = finishSelector; didFailSelector = failSelector; //note this change if (idtm!=1) { [request prepare]; } connection = [[NSURLConnection alloc] initWithRequest:aRequest delegate:self]; } 

尝试这个。 肯定会工作。 希望这将有助于未来的游客。

问候