2012-09-04 69 views
0

我試過運行OAuthStarterKit xcode項目開箱即用,輸入了正確的api密鑰/祕密和oauth用戶令牌/密碼。當我使用此代碼授權時:Linkedin API錯誤iPhone入門工具包中的無效簽名

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

編輯:公司將試圖讓這個未來的底部,並回答我的問題,如果沒有人擊敗我它。

回答

1

經過與LinkedIn API Beast的大量爭論後,我發現問題的方式是編碼的方式,長的故事,在OAuthLoginView.m方法'requestTokenFromProvider'我需要包含參數'範圍'的OARequestParameter對象中的相關權限。

(基於斷GitHub庫 - >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與 - 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"; 
} 
+0

仍然無法在ios 7設備上使用ipad。 – NaXir