繁体   English   中英

iPhone入门工具包中的Linkedin API错误签名无效

[英]Linkedin API Error Invalid Signature in iPhone Starter Kit

我尝试开箱即用地运行OAuthStarterKit xcode项目,输入了正确的api密钥/秘密和oauth用户令牌/秘密。 当我开始使用此代码进行授权时:

    OAMutableURLRequest *request = 
        [[[OAMutableURLRequest alloc] initWithURL:requestTokenURL
                                         consumer: self.consumer
                                            token: self.requestToken   
                                         callback:linkedInCallbackURL
                                signatureProvider:sha] autorelease];

它返回错误“ signature_invalid”,这似乎表明签名不正确。 明文和密文混合使用大小写字符,我不确定这是否有所作为。

如果我用

requestTokenURLString = @"https://api.linkedin.com/uas/oauth/requestToken?scope=r_basicprofile+r_emailaddress";

它返回无效信号...但是如果我使用基本权限调用

requestTokenURLString = @"https://api.linkedin.com/uas/oauth/requestToken;

它可以正常工作,但是这意味着我只有基本的个人资料权限,而在这里我需要诸如电子邮件地址之类的东西。

在测试控制台中输入所有相同的数据似乎在这里可以正常工作:

https://developer.linkedin.com/oauth-test-console

有人知道我应该做什么,在想什么或应该去哪里看吗? 更多日志信息:

oauth_problem=signature_invalid
oauth_problem_advice=com.linkedin.security.auth.pub.LoginDeniedInvalidAuthTokenException while obtaining request token for: POST https://api.linkedin.com/uas/oauth/requestToken/oauth_callback:hdlinked://linkedin/oauth 
oauth_consumer_key: XXX
oauth_nonce
oauth_signature_method: 3DHMACSHA1

2012-09-04 23:36:07.054 OAuthStarterKit[31952:c07] secret: TIDi9XXXXXXX
2012-09-04 23:36:07.054 OAuthStarterKit[31952:c07] base64EncodedResult: JXW6ZWUpXv7ba98o2hcUXodDhmg=

我正在从这里使用代码示例https://github.com/synedra/LinkedIn-OAuth-Sample-Client

编辑:如果没有人击败我,明天将努力探究这个问题的底部,并回答我自己的问题。

经过与Linkedin API Beast的大量争论之后,我发现问题出在长处,这是在OAuthLoginView.m的方法“ requestTokenFromProvider”中,我需要在参数“ scope”中包含相关权限OARequestParameter对象。

(基于github repo-> https://github.com/synedra/LinkedIn-OAuth-Sample-Client

之后,无论您在哪里进行api调用(例如在OAuthStarterKit中),例如在ProfileTabView :: profileApiCall中,都可以触发如下URL帖子: http ://api.linkedin.com/v1/people/~ :( id,first-name,last-name,industry )“];或者,如果您需要他们的电子邮件地址,它就会出现(只要您具有访问电子邮件的权限,您也可以像下面这样简单地抓取该地址:

NSURL *url = [NSURL URLWithString:@"http://api.linkedin.com/v1/people/~:(id,first-name,last-name,industry,email-address)"];

请参阅下面的URL请求中使用OARequestParameter的代码...

- (void)requestTokenFromProvider
{
    OAMutableURLRequest *request = 
            [[[OAMutableURLRequest alloc] initWithURL:requestTokenURL
                                             consumer:self.consumer
                                                token:nil   
                                             callback:linkedInCallbackURL
                                    signatureProvider:nil] autorelease];

    [request setHTTPMethod:@"POST"];

    OARequestParameter * scopeParameter=[OARequestParameter requestParameter:@"scope" value:@"r_fullprofile r_contactinfo r_emailaddress"];

    [request setParameters:[NSArray arrayWithObject:scopeParameter]];

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

对于使用Linkedin的API的更深入的快捷方式,我将在这里的博客上保留一些快速提示-> http://techrantnz.blogspot.com.au/2012/09/the-linkedin-api-with-oauthstarterkit。 html

如果您想检查一切是否正常,请检查成功的方法

- (void)profileApiCallResult:(OAServiceTicket *)ticket didFinish:(NSData *)data

如果输出响应正文,则可能会看到类似以下内容的内容:

2012-09-05 21:40:55.109 OAuthStarterKit[12244:c07] profile: {
    emailAddress = "[my email]@gmail.com";
    firstName = Dave;
    id = XXXXXX;
    industry = "Information Technology and Services";
    lastName = "XXXXXXXX";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM