2012-09-04 3 views
0

Я попытался запустить проект xcode OAuthStarterKit из коробки, ввел правильный ключ/секретный ключ api/secret и oauth. Когда я получаю санкционирования с этим кодом:Ошибка Linkedin API Недопустимая подпись в iPhone Starter Kit

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

Edit: Будет ли пытаться докопаться до этого завтра и ответить на мой собственный вопрос, если никто не бьет меня Это.

ответ

1

После долгих споров с Linkedin API Beast, я обнаружил, что проблема заключается в том, что в OAuthLoginView.m так много вещей закодировано, в методе «requestTokenFromProvider» мне нужно было включить область «scope» с соответствующие разрешения в объекте OARequestParameter.

(на основе выключения GitHub репо ->https://github.com/synedra/LinkedIn-OAuth-Sample-Client)

После этого, где бы вы сделать свой апи вызова (в 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)"]; 

Смотрите код для использования параметра OARequestParameter в запросе URL ниже ...

- (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:)];  
} 

А для более глубоких кратчайшего с использованием API в LinkedIn я буду держать некоторые QuickTips на моем блоге здесь -> http://techrantnz.blogspot.com.au/2012/09/the-linkedin- апи-с-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

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