LinkedIn授权错误

时间:2011-12-15 11:49:20

标签: oauth linkedin

你能帮帮我吗?我正在尝试从iPhone应用程序登录到LinkedIn,结果收到错误:oauth_problem = signature_invalid。

当我尝试使用POST参数调用URL https://api.linkedin.com/uas/oauth/accessToken的方法时,我会收到它:

OAuth realm="http://sp.example.com/", 
oauth_consumer_key="Z-sSugZBQPQGQTAymNEVSQTrBBrteG1x0PHwXWrtkvrNWfKJuzQ36AmwT1j8UBPh", 
oauth_token="19a1cc6e-597f-47ed-8d1c-778d05b25de3", 
oauth_signature_method="HMAC-SHA1", 
oauth_signature="vOfSRkbbC2%2FFw26wy6s%2FF5ThkS4%3D", 
oauth_timestamp="1323948893", 
oauth_nonce="431570D9-405F-4844-85E0-85722B53D397", 
oauth_version="1.0", 
oauth_verifier="12611"

我不明白出了什么问题。 :(

有趣的是,Twitter和Facebook都运作良好。

2 个答案:

答案 0 :(得分:1)

我怀疑你的签名没有正确生成 - 当人们从GET转移到POST时,人们有OAuth签名(401)错误,因为签名没有正确生成。我完全同意在LinkedIn上使用oauth-test-console的建议(我为此创建了这个)。如果您将调用的特定变量放入表单中,则应该获得相同的签名 - 如果不这样,则表示您的签名生成错误。

有人说过,我写了一个示例LinkedIn iPhone客户端(它所做的就是进行身份验证并获取您的个人资料)。图书馆在这里: https://github.com/synedra/LinkedIn-OAuth-Sample-Client

LoginView在这里: https://github.com/synedra/LinkedIn-OAuth-Sample-Client/blob/master/OAuthStarterKit/OAuthLoginView.m

您正在寻找的特定部分听起来像这种方法:

- (void)accessTokenFromProvider
{ 
  OAMutableURLRequest *request = 
    [[[OAMutableURLRequest alloc] initWithURL:accessTokenURL
           consumer:self.consumer
           token:self.requestToken   
           callback:nil
           signatureProvider:nil] autorelease];

    [request setHTTPMethod:@"POST"];
    OADataFetcher *fetcher = [[[OADataFetcher alloc] init] autorelease];
    [fetcher fetchDataWithRequest:request
      delegate:self
      didFinishSelector:@selector(accessTokenResult:didFinish:)
      didFailSelector:@selector(accessTokenResult:didFail:)];    

}

答案 1 :(得分:0)

如果在一个平台上传递的东西应该传递给另一个平台,那不是一个条件:)

根据我的理解,平台/服务如何实现给定的规范总是存在一些差异。

建议您使用在测试控制台中链接来检查出现了什么问题

LinkedIn oauth-test-console