当我尝试使用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都运作良好。
答案 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)
如果在一个平台上传递的东西应该传递给另一个平台,那不是一个条件:)
根据我的理解,平台/服务如何实现给定的规范总是存在一些差异。
建议您使用在测试控制台中链接来检查出现了什么问题