2013-07-16 2 views
1

Я пытаюсь войти в мое приложение, чтобы загрузить видео, приложение, которое я создал на vimeo, одобрено.Войдите в vimeo, используя xAuth

Upload Access

Approved for the following accounts: Your account

Я использую AFNetworking и AFOAuth1Client (https://github.com/AFNetworking/AFOAuth1Client), но и попытался AFXAuthClient (https://github.com/romaonthego/AFXAuthClient).

используя AFOAuth1Client со следующим кодом:

self.vimeoClient = [[AFOAuth1Client alloc] initWithBaseURL:[NSURL URLWithString:vimeoBaseUrl] 
                 key:@"ClientIDHere" 
                secret:@"SecretHere"]; 
[self.vimeoClient postPath:@"/oauth/access_token" 
       parameters:[NSDictionary dictionaryWithObjectsAndKeys:@"client_auth",@"x_auth_mode",@"myEmail",@"x_auth_username",@"myPwd",@"x_auth_password",@"write",@"x_auth_permission", nil] 
        success:^(AFHTTPRequestOperation *operation, id responseObject) { 
    NSLog(@"..."); 
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    NSLog(@":%@", error.description); 
}]; 

Я получаю эту ошибку:

VimeoTest[49559:c07] :Error Domain=AFNetworkingErrorDomain Code=-1011 "Expected status code in (200-299), got 401" UserInfo=0x75622d0 {NSLocalizedRecoverySuggestion=401 Unauthorized - Invalid signature - The oauth_signature passed was not valid., AFNetworkingOperationFailingURLRequestErrorKey=https://vimeo.com/oauth/access_token>, NSErrorFailingURLKey= https://vimeo.com/oauth/access_token , NSLocalizedDescription=Expected status code in (200-299), got 401, AFNetworkingOperationFailingURLResponseErrorKey=}

используя AFXAuthClient со следующим кодом:

//update begin 
AFXAuthToken *token = [[AFXAuthToken alloc] initWithKey:@"Access token from vimeo" secret:@"Access token secret"]; 
[self.vimeoXClient setToken:token]; 
//update end 

self.vimeoXClient = [[AFXAuthClient alloc] initWithBaseURL:[NSURL URLWithString:vimeoBaseUrl] 
key:@"ClientIDHere" 
secret:@"SecretHere"]; 
[self.vimeoXClient authorizeUsingXAuthWithAccessTokenPath:@"/oauth/access_token" 
              accessMethod:@"POST" 
               username: @"myEmail" 
               password: @"myPwd" 
                success:^(AFXAuthToken *accessToken) { 
                 NSLog(@"..."); 
                } 
                failure:^(NSError *error) { 
                 NSLog(@"error: %@", error.description); 

                }]; 

Я получаю эту ошибку:

2013-07-16 20:18:27.819 VimeoTest[49680:c07] error: Error Domain=AFNetworkingErrorDomain Code=-1011 "Expected status code in (200-299), got 400" UserInfo=0x7223e80 {NSLocalizedRecoverySuggestion=400 Bad Request - Missing required parameter - A required parameter was missing: oauth_token., AFNetworkingOperationFailingURLRequestErrorKey=https://vimeo.com/oauth/access_token>, NSErrorFailingURLKey= https://vimeo.com/oauth/access_token , NSLocalizedDescription=Expected status code in (200-299), got 400, AFNetworkingOperationFailingURLResponseErrorKey=}

ошибки после обновления коды (установка маркеров):

2013-07-16 21:20:14.060 VimeoTest[52437:c07] error: Error Domain=AFNetworkingErrorDomain Code=-1011 "Expected status code in (200-299), got 401" UserInfo=0x8b245a0 {NSLocalizedRecoverySuggestion=401 Unauthorized - Permission Denied - The oauth_token passed was either not valid or has expired., AFNetworkingOperationFailingURLRequestErrorKey=https://vimeo.com/oauth/access_token>, NSErrorFailingURLKey= https://vimeo.com/oauth/access_token , NSLocalizedDescription=Expected status code in (200-299), got 401, AFNetworkingOperationFailingURLResponseErrorKey=}

кого-то есть идея, что я делаю не так?

--- UPDATE ---

используя Runscope Посылаю следующие параметры

Accept: */* 
Accept-Encoding: gzip, deflate, compress 
Authorization: OAuth oauth_nonce="63129149524659229601374074093", oauth_timestamp="1374074093", oauth_version="1.0", oauth_signature_method="HMAC-SHA1", oauth_consumer_key="MYCONSUMERKEYHERE", oauth_token="MYAPPTOKENHERE", oauth_callback="None", oauth_verifier="None", oauth_signature="lW%2BQYzwCcaDzSgoZUtvpSgLRSF4%3D" 
Connection: close 
Content-Length: 0 
Host: vimeo-com-bbmyq45awg44.runscope.net 
User-Agent: runscope/0.1 
X-Forwarded-For: 54.236.210.241 
X-Forwarded-Protocol: https 
X-Forwarded-Ssl: on 
X-Real-Ip: 54.236.210.241 
X_auth_mode: client_auth 
X_auth_password: MYPWDHERE 
X_auth_permission: write 
X_auth_username: MYUSERNAMEHERE 

Я все еще получаю тот же ответ

HEADERS 

Access-Control-Allow-Credentials: true 
Access-Control-Allow-Methods: GET, PUT, POST, PATCH, DELETE, OPTIONS, HEAD 
Access-Control-Allow-Origin: * 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Connection: close 
Content-Length: 104 
Content-Type: text/plain;charset=UTF-8 
Date: Wed, 17 Jul 2013 15:14:53 GMT 
Expires: Wed, 17 Jul 2013 03:14:53 GMT 
Runscope-Message-Id: 7bd9d07d-d043-4486-9a19-c3572997d3e4 
Server: Apache 
Vary: Accept-Encoding 
X-Dns-Prefetch-Control: on 
X-Powered-By: PHP/5.4.14 
BODY view raw 

401 Unauthorized - Permission Denied - The oauth_token passed was either not valid or has expired. 

Я действительно не уверен, если я скучаю некоторые параметры. Требуется ли oauth_verifier или oauth_callback? В моей Vimeo установке App я получил следующее:

Your Callback URL (edit) vimeoTest://success

+1

Если вы успешно получили сообщение «Пропущенный oauth_token был либо недействительным, либо истек», то я предполагаю, что вы правильно отправляете свой запрос. Вы можете проверить, что все заголовки и параметры успешно установлены с помощью [Runscope] (http://runscope.com). Если все соответствующие заголовки отправляются, Vimeo имеет возможность проверить токен, который вы используете. Вы можете связаться с ними через [страницу справки] (https://vimeo.com/help/contact). – Dashron

ответ

1

У меня была аналогичная проблема, и мне пришлось вручную добавить параметр oauth_callback на запрос. Если у вас есть настольное приложение и его не будет использовать, установите его в oob.