2011-02-03 2 views
0

J'ai essayé d'obtenir Auth_url à partir de l'API du panneau retrieveRequestToken. Il lance OAuthCommunicationException. Quand j'ai utilisé le même code pour twitter (après avoir changé de consommateur et fournir), cela fonctionne sans problème. S'il vous plaît aidez-moi ici. MerciProblème avec OAuth utilisant l'API Signpost sur Netflix - OAuthCommunicationException

public class NetflixTest { 

private static final long serialVersionUID = 1L; 

    public static final String NETFLIX_REQUEST_TOKEN_URL = "http://api.netflix.com/oauth/request_token"; 
    public static final String NETFLIX_ACCESS_TOKEN_URL = "http://api.netflix.com/oauth/access_token"; 
    public static final String NETFLIX_AUTHORIZE_URL = "https://api-user.netflix.com/oauth/login"; 

    public static void main(String[] args) { 

     System.setProperty("debug", "1"); 
     OAuthConsumer consumer = new DefaultOAuthConsumer("jw5pvuq766d6rf4m2pu2ft5r", "y8x3dhMFqz");  
     OAuthProvider provider = new DefaultOAuthProvider(NETFLIX_REQUEST_TOKEN_URL, 
      NETFLIX_ACCESS_TOKEN_URL, NETFLIX_AUTHORIZE_URL); 

     try { 
      String authUrl = provider.retrieveRequestToken(consumer, "http://mydomain.com/Netflix/");  
      System.out.println(authUrl); 

     } catch (OAuthMessageSignerException e) { 
      e.printStackTrace(); 
     } catch (OAuthNotAuthorizedException e) { 
      e.printStackTrace(); 
     } catch (OAuthExpectationFailedException e) { 
      e.printStackTrace(); 
     } catch (OAuthCommunicationException e) { 
      e.printStackTrace(); 
      System.out.println(e.getResponseBody()); 
     } 

    } 
} 
+0

Assurez-vous que l'heure de votre système est synchronisée avec un serveur NTP. J'ai rencontré des problèmes avec Netflix rejetant des demandes OAuth parce que mon temps système avait trop déraillé. –

+0

Mon système est synchronisé – Vjy

Répondre

0
if (connection.getRequestMethod().equalsIgnoreCase("POST")) { 
     connection.setRequestProperty("Content-Type", 
       "application/x-www-form-urlencoded"); 
     connection.setDoOutput(true); 
     DataOutputStream wr = new DataOutputStream(
       connection.getOutputStream()); 
     wr.writeBytes(""); 
     wr.flush(); 
     wr.close(); 
    } else { 
     connection.connect(); 
    } 

Changé sendRequest de classe DefaultOAuthProvider comme ci-dessus. On dirait que le serveur est strict et attend quelques octets lorsque vous faites un POST.

Questions connexes