Oauth Vimeo с Scribe «Неверный ключ API» (код ошибки 100)

StackOverflow https://stackoverflow.com//questions/9705685

  •  14-12-2019
  •  | 
  •  

Вопрос

Я пытаюсь аутентифицироваться в Vimeo, используя scribe . Это не слишком хорошо. Я продолжаю получать код ошибки 100 назад, но он по-прежнему дает мне URL авторизации, и когда я пойду к нему, я могу предоставить доступ. Это просто когда я ввожу код авторизации и попробуйте обменять токен запроса для токена доступа, который не работает. Я использую пример Facebook и настраиваю его на работу с Vimeo. Я не знаю, что я здесь делаю. Я спросил Вопрос ранее и сказал, что мне нужно включить Apache Commons Codec на моем классе. Ну, я включал его в мои переменные окружающей среды, и это ничего не изменило. Поэтому я только что добавил его в свои библиотеки для проекта, и это, казалось, принес мне шаг дальше. Теперь я просто понятия не имею, что делать отсюда. Я не понимаю, почему я получаю это. Вот мой код и вывод:

public class VimeoTest
{
  private static final String NETWORK_NAME = "Vimeo";
  private static final Token EMPTY_TOKEN = null;

  public static void main(String[] args)
  {
    // Replace these with your own api key and secret
    String apiKey = "MYAPIKEY";
    String apiSecret = "MYAPISECRET";
    OAuthService service = new ServiceBuilder()
                                  .provider(VimeoApi.class)
                                  .apiKey(apiKey)
                                  .apiSecret(apiSecret)
                                  .debug()
                                  .build();
    Scanner in = new Scanner(System.in);

    System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
    System.out.println();
    OAuthRequest orequest = new OAuthRequest(Verb.GET, "http://vimeo.com/api/rest/v2");
    orequest.addQuerystringParameter("method", "vimeo.test.null");
    Response send = orequest.send();
    System.out.println(send.getBody());

    // Obtain the Authorization URL
    System.out.println("Fetching the Authorization URL...");
    Token requestToken = service.getRequestToken();

    String authorizationUrl = service.getAuthorizationUrl(requestToken);
    System.out.println("Got the Authorization URL!");
    System.out.println("Now go and authorize Scribe here:");

    //I do NOT want to have to do this. Is there any other way I can have this authorize without going to a web browser to do this?

    System.out.println(authorizationUrl);
    System.out.println("And paste the authorization code here");
    System.out.print(">>");
    Verifier verifier = new Verifier(in.nextLine());
    System.out.println();

    // Trade the Request Token and Verfier for the Access Token
    System.out.println("Trading the Request Token for an Access Token...");
    Token accessToken = service.getAccessToken(EMPTY_TOKEN, verifier);

    //****Breaks on the line above.****
    //I think it's because the orequest.send() returned a 100 error code
    //Note, EMPTY_TOKEN is declared as null, but I think that's ok. Verifier is not null.

    System.out.println("Got the Access Token!");
    System.out.println("(if your curious it looks like this: " + accessToken + " )");
    System.out.println();
.

Вот выход:

=== Vimeo's OAuth Workflow ===

1.0
<?xml version="1.0" encoding="utf-8"?>
<rsp generated_in="0.0033" stat="fail">
  <err code="100" expl="The API key passed was not valid" msg="Invalid API Key" />
</rsp>
Fetching the Authorization URL...
obtaining request token from http://vimeo.com/oauth/request_token
setting oauth_callback to oob
generating signature...
base string is: POST&http%3A%2F%2Fvimeo.com%2Foauth%2Frequest_token&oauth_callback%3Doob%26oauth_consumer_key%3DACONSUMERKEY%26oauth_nonce%3D2861480766%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1331941401%26oauth_version%3D1.0
signature is: 7H/C4F4rK0FYZ5oZGf76Rl8P8yQ=
appended additional OAuth parameters: { oauth_callback -> oob , oauth_signature -> 7H/C4F4rK0FYZ5oZGf76Rl8P8yQ= , oauth_version -> 1.0 , oauth_nonce -> 2861480766 , oauth_signature_method -> HMAC-SHA1 , oauth_consumer_key -> ACONSUMERKEY , oauth_timestamp -> 1331941401 }
using Http Header signature
sending request...
response status code: 200
response body: oauth_token=bf3da4ec799559c9f8b1f8bda2b8d6ee&oauth_token_secret=AOAUTHTOEKN SECRET&oauth_callback_confirmed=true
Got the Authorization URL!
Now go and authorize Scribe here:
http://vimeo.com/oauth/authorize?oauth_token=bf3da4ec799559c9f8b1f8bda2b8d6ee
And paste the authorization code here
>>unicorn-duqx0
Exception in thread "main" java.lang.NullPointerException

Trading the Request Token for an Access Token...
obtaining access token from http://vimeo.com/oauth/access_token
    at org.scribe.oauth.OAuth10aServiceImpl.getAccessToken(OAuth10aServiceImpl.java:75)
    at autouploadermodel.VimeoTest.main(VimeoTest.java:51)
Java Result: 1
BUILD SUCCESSFUL (total time: 27 seconds)
.

Редактирование: добавлено .debug () на новый сервис () и обновлял вывод соответственно.

Это было полезно?

Решение

Изменить эту строку:

Token accessToken = service.getAccessToken(EMPTY_TOKEN, verifier);

для:

Token accessToken = service.getAccessToken(requestToken, verifier);


Редактировать

Целый ключ Несанкционированная часть состоит в том, что этот кусок кода:

OAuthRequest orequest = new OAuthRequest(Verb.GET, "http://vimeo.com/api/rest/v2");
orequest.addQuerystringParameter("method", "vimeo.test.null");
Response send = orequest.send();
System.out.println(send.getBody());
.

Вы пытаетесь сделать запрос на получение root API (не уверены, даже если это действительный ресурс), не подписывая его.Конечно, он собирается дать несанкционированную ошибку.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top