2011-12-15 127 views
0

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

我接受它,当我试图通过URL https://api.linkedin.com/uas/oauth/accessToken与POST参数来调用方法:

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的做工精细。

+0

你使用任何API还是依靠自己的代码? – 2011-12-15 11:54:15

+0

我为所有服务使用OAuthConsumer API:FB,Twitter和LinkedIn – VictorT 2011-12-15 12:05:31

+0

只需使用LinkedIn oauth-test-console – 2011-12-15 12:10:12

回答

0

它不是,如果事情变得在一个平台上传递应该得到另一个:)

按我的理解总是有已通过条件平台/服务如何实现给定规范的一些差异。

建议您使用链接的测试控制台检查究竟是怎么了?

LinkedIn oauth-test-console

0

我怀疑是不是如何产生你的签名正确 - 经常当人们有OAuth的签名(401)从GET转到POST时出错,这是因为签名没有正确生成。我完全同意使用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:)];  

}