Question

Note: Vous pourrez peut-être m'aider avec cela simplement en me dirigeant vers un endroit qui explique comment interfacer avec les services Web. Mais l'aide sur ce problème spécifique serait grandement appréciée!

J'ai vraiment du mal à comprendre comment fonctionne Oauth. J'essaie de développer une application de bureau qui téléchargera une bande de vidéos aux comptes sur Vimeo. J'ai essayé de bricoler un peu avec le API SCRIBE et son exemples . Scribe n'a pas d'exemple de Vimeo Malheureusement, j'ai donc essayé de modifier l'exemple Facebook pour le faire fonctionner pour Vimeo. Il y a très peu d'informations sur la manière dont tout cela fonctionne (que j'ai pu 1: trouver, 2: Comprendre). Voici ce que j'ai aussi loin que le code et les erreurs:

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)
                                  .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();

    //Breaks on the line above.
    //But I think it's because the orequest.send() returned a 100 error code

    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();

Voici la sortie et l'erreur:

=== Vimeo's OAuth Workflow ===

1.0
<?xml version="1.0" encoding="utf-8"?>
<rsp generated_in="0.0069" stat="fail">
  <err code="100" expl="The API key passed was not valid" msg="Invalid API Key" />
</rsp>
Fetching the Authorization URL...
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/codec/binary/Base64
    at org.scribe.services.HMACSha1SignatureService.doSign(HMACSha1SignatureService.java:47)
    at org.scribe.services.HMACSha1SignatureService.getSignature(HMACSha1SignatureService.java:33)
    at org.scribe.oauth.OAuth10aServiceImpl.getSignature(OAuth10aServiceImpl.java:118)
    at org.scribe.oauth.OAuth10aServiceImpl.addOAuthParams(OAuth10aServiceImpl.java:63)
    at org.scribe.oauth.OAuth10aServiceImpl.getRequestToken(OAuth10aServiceImpl.java:43)
    at autouploadermodel.VimeoTest.main(VimeoTest.java:38)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.codec.binary.Base64
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    ... 6 more
Java Result: 1

Quoi qu'il en soit, je parierai que c'est vraiment simple, mais je ne comprends tout simplement pas comment interfacer avec les services Web. Merci pour une aide!

Était-ce utile?

La solution

Vous devez inclure CODEC Apache Commons sur votre classe de classe

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top