簡體   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