Войдите в Vimeo, используя xAuth

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

Загрузить доступ

Одобрено для следующих аккаунтов: Ваш аккаунт

Я использую 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]. Ошибка домена =AFNetworkingErrorDomain Code=-1011 "Ожидаемый код состояния в (200-299), получил 401" UserInfo=0x75622d0 {NSLocalizedRecoverySuggestion=401 Несанкционированное - Неправильная подпись - The oauth_signature прошло не действует, AFNetworkingOperationFailingURLRequestErrorKey = https: //vimeo.com/oauth/access_token>, NSErrorFailingURLKey = https://vimeo.com/oauth/access_token, NSLocalizedDescription= Ожидаемый код состояния в (200-299), получено 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]: Ошибка Domain=AFNetworkingErrorDomain Code=-1011 "Ожидаемый код состояния в (200-299), получено 400" UserInfo=0x7223e80 {NSLocalizedRecoverySuggestion=400 Неправильный запрос - Отсутствует обязательный параметр - отсутствует обязательный параметр: oauth_token., AFNetworkingOperationFailingURLRequestErrorKey = https: //vimeo.com/oauth/access_token>, NSErrorFailingURLKey = https://vimeo.com/oauth/access_token, код состояния NSLocalizedDescription= NSLocalizedDescription= 200 -299), получил 400, AFNetworkingOperationFailingURLResponseErrorKey=}

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

2013-07-16 21: 20: 14.060 Ошибка VimeoTest[52437:c07]: Ошибка Domain=AFNetworkingErrorDomain Code=-1011 "Ожидаемый код состояния в (200-299), получено 401" UserInfo=0x8b245a0 {NSLocalizedRecoverySuggestion=401 Не авторизовано - разрешение Отклонено - переданный oauth_token либо недействителен, либо срок его действия истек., AFNetworkingOperationFailingURLRequestErrorKey = https: //vimeo.com/oauth/access_token>, NSErrorFailingURLKey = https://vimeo.com/oauth/access_token, NSLpectedizedDescription = 200-299), получил 401, AFNetworkingOperationFailingURLResponseErrorKey=}

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

--- ОБНОВИТЬ ---

с помощью 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 я получил следующее:

Ваш обратный URL (редактировать) vimeoTest://success

1 ответ

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

Другие вопросы по тегам