Ошибка авторизации в LinkedIn - PullRequest
0 голосов
/ 15 декабря 2011

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

Я получаю его, когда пытаюсь вызвать метод по 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 работают нормально.

Ответы [ 2 ]

1 голос
/ 23 декабря 2011

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

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

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

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

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

LinkedIn oauth-test-console

...