2011-12-15 2 views
0

Не могли бы вы помочь мне? Я пытаюсь войти из приложения iPhone в LinkedIn и в результате получить ошибку: oauth_problem = signature_invalid.Ошибка авторизации с LinkedIn

я получаю, когда я пытаюсь вызвать метод по URL https://api.linkedin.com/uas/oauth/accessToken с параметрами POST:

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

Вы используете любой API или полагаться на собственный код? –

+0

Я использую API OAuthConsumer для всех сервисов: FB, Twitter и LinkedIn – VictorT

+0

просто проверьте свою подпись и другие вещи, используя LinkedIn oauth-test-console –

ответ

0

Это не условие, что если вещи становятся передаются на одной платформе должны получить передается по другому :)

Согласно моему пониманию там всегда есть некоторые различия в том, как платформа/сервис реализуют данные спецификации.

предлагаем вам использовать Linked в консоли Test, чтобы проверить, что именно происходит неправильно

LinkedIn oauth-test-console

+0

У меня возникла ошибка при исключении в потоке «main» com.google.code.linkedinapi.client.oauth.LinkedInOAuthServiceException: oauth.signpost.exception.OAuthCommunicationException: связь с поставщиком услуг не удалась: сервер вернул код ответа HTTP: 401 для URL: https://api.linkedin.com/uas/oauth/requestToken, как я могу это решить? В oauth -test-console он работает нормально – muthu

0

Мои подозрения в том, что ваша подпись не получает генерируется правильно - часто, когда люди имеют OAuth подписи (401) ошибки при переходе с GET на POST это потому, что подпись не генерируется правильно. Я полностью согласен с предложением использовать консоль oauth-test на LinkedIn (которую я создал для этой самой ситуации). Если вы поместите конкретные переменные для своего звонка в форму, вы должны получить идентичную подпись - если вы этого не сделаете, значит, ваша подпись генерируется неправильно.

Это, как было сказано, я написал пример LinkedIn iPhone Client (все, что он делает, это сделать аутентификацию и получить ваш профиль). Библиотека находится здесь: 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:)];  

}

+0

Я действительно получаю эту ошибку, используя ваш код здесь: http://stackoverflow.com/questions/12265035/linkedin-api-error-invalid-signature-in-iphone-starter -kit, но только тогда, когда я меняю разрешения, так что это не работает: requestTokenURLString = @ "https://api.linkedin.com/uas/oauth/requestToken?scope=r_basicprofile+r_emailaddress"; но установив его следующим образом: https://api.linkedin.com/uas/oauth/requestToken –

Смежные вопросы