[英]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.