2011-02-03 27 views
0

我试图从retrieveRequestToken路标API获取Auth_url。它抛出OAuthCommunicationException。当我在twitter上使用相同的代码时(改变消费者并提供后),它的工作没有问题。请在这里帮助我。感谢在Netflix上使用路标API的OAuth问题 - 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

确保您的系统时间已同步到NTP服务器。我在Netflix拒绝OAuth请求时遇到了问题,因为我的系统时间偏差过大。 – 2011-02-03 04:57:48

回答

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

变更DefaultOAuthProvider类的sendRequest将如上。看起来像服务器是严格的,当你做POST时期望有一些字节。

相关问题