无法使用针对LinkedIn的OAuth入门工具包进行共享 [英] Can't share using OAuth Starter Kit for LinkedIn

查看:82
本文介绍了无法使用针对LinkedIn的OAuth入门工具包进行共享的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用OAuthStarter Kit访问LinkedIn API.我成功获得了用于权限的访问令牌.

I use OAuthStarter Kit for accessing the LinkedIn API. I get an access token successfully for the permissions.

rw_ns
r_basicprofile
r_fullprofile

rw_ns
r_basicprofile
r_fullprofile

既可以获取个人资料详细信息,也可以仅共享评论,并且可以共享URL或图像或描述等.我使用以下代码:

It is possible to get the profile details as well as to share only comments and while sharing URL or image or description etc... I using following code:

-(void)postUpdate
 {
   NSURL *url = [NSURL URLWithString:@"http://api.linkedin.com/v1/people/~/shares"];
   OAMutableURLRequest *request =
   [[OAMutableURLRequest alloc] initWithURL:url
                            consumer:[self getConsumer]
                               token:self.accesstoken
                            callback:nil
                   signatureProvider:nil];

   NSDictionary *update = [[NSDictionary alloc] initWithObjectsAndKeys:

                    [[NSDictionary alloc]
                     initWithObjectsAndKeys:
                     @"anyone",@"code",nil], @"visibility",
                    @"title goes here",@"title",
                    @"comment goes here", @"comment",
                    @"description goes here",@"description",
                     @"www.google.com",@"submitted-url",
                    @"http://economy.blog.ocregister.com/files/2009/01/linkedin-logo.jpg",@"submitted-image-url",
                    nil];
   [request setValue:@"json" forHTTPHeaderField:@"x-li-format"];
   [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

   NSString *updateString = [update JSONString];
   [request setHTTPBodyWithString:updateString];
    [request setHTTPMethod:@"POST"];

   OADataFetcher *fetcher = [[OADataFetcher alloc] init];
   [fetcher fetchDataWithRequest:request
                 delegate:self
        didFinishSelector:@selector(postUpdateApiCallResult:didFinish:)
          didFailSelector:@selector(postUpdateApiCallResult:didFail:)];

  }

但是我得到如下响应错误:

But I get a response error as follows:

 2012-10-09 18:27:29.906 SocialConnectTest[9460:19a03] data {
 "errorCode": 0,
 "message": "Invalid xml {Expected elements 'post-network-update@http://api.linkedin.com/v1 id@http://api.linkedin.com/v1 visibility@http://api.linkedin.com/v1 comment@http://api.linkedin.com/v1 attribution@http://api.linkedin.com/v1 content@http://api.linkedin.com/v1 private-message@http://api.linkedin.com/v1 share-target-reach@http://api.linkedin.com/v1' instead of 'submitted-url@http://api.linkedin.com/v1' here in element share@http://api.linkedin.com/v1}",
 "requestId": "W2G7WJDHOJ",
 "status": 400,
 "timestamp": 1349787449685
}

我不知道问题是什么.谁能帮我解决这个问题?

And I don't know what the problem is. Can anyone please help me solving this?

推荐答案

我修复了它. 问题出在后参数中

i fixed it. The problems is in the post parameters

  1. 根据api中链接的文档,如果我们在请求正文中使用JSON,则为 那么post params的键必须为驼峰式大小写,而在xml -" 中则使用单独的键名.
  2. 共享参数,例如 submittedUrl,subsubmittedImageUrl,说明,标题**等.必须是称为** content 的键的值.
  1. As per the documentation of Linked in api,if we use JSON in request body then keys of post params must be in camel case, while in xml "-" seperated key names are used.
  2. Share parameter like submittedUrl , subsubmittedImageUrl , description,title **etc. must be values of key called **content.

所以我修改了代码如下.

so i modified the code as follows..

-(void)postUpdateHERE
{
  NSURL *url = [NSURL URLWithString:@"http://api.linkedin.com/v1/people/~/shares"];
  OAMutableURLRequest *request =
  [[OAMutableURLRequest alloc] initWithURL:url
                            consumer:[self getConsumer]
                               token:self.accesstoken
                            callback:nil
                   signatureProvider:nil];

  NSDictionary *update = [[NSDictionary alloc] initWithObjectsAndKeys:

                    [[NSDictionary alloc]
                     initWithObjectsAndKeys:
                     @"anyone",@"code",nil], @"visibility",

                    @"comment goes here", @"comment",
                    [[NSDictionary alloc]
                     initWithObjectsAndKeys:
                    @"description goes here",@"description",
                    @"www.google.com",@"submittedUrl",
                      @"title goes here",@"title",
                    @"http://economy.blog.ocregister.com/files/2009/01/linkedin-logo.jpg",@"submittedImageUrl",nil],@"content",
                    nil];
  [request setValue:@"json" forHTTPHeaderField:@"x-li-format"];
  [request setValue:@"application/xml" forHTTPHeaderField:@"Content-Type"];
  NSString *updateString = [update JSONString];
  [request setHTTPBodyWithString:updateString];
  [request setHTTPMethod:@"POST"];
  OADataFetcher *fetcher = [[OADataFetcher alloc] init];
  [fetcher fetchDataWithRequest:request
                 delegate:self
        didFinishSelector:@selector(postUpdateApiCallResult:didFinish:)
          didFailSelector:@selector(postUpdateApiCallResult:didFail:)];

}

现在代码对我有用.

这篇关于无法使用针对LinkedIn的OAuth入门工具包进行共享的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆