2017-01-09 1 views
0

Я разрабатываю Twitter Rest пример. В этом примере я хочу позвонить в API Twitter REST. Когда я запускаю программу ниже, я вижу ошибку. Не могли бы вы сообщить мне, в чем проблема?461Forbidden {"errors": [{"message": "SSL required", "code": 92}]} using Java

public class JavaRestTweet { 
    static String consumerKeyStr = "RSvE3XXXXXXXXXXXX"; 
    static String consumerSecretStr = "nKEWRoOcIXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; 
    static String accessTokenStr = "1371430742-XXXXXXXXXXXXXXXXXXXXXXXXXX"; 
    static String accessTokenSecretStr = "6ofNXMXXXXXXXXXXXXXXXXXXXXXXXXX"; 

    public static void main(String[] args) throws Exception { 
     OAuthConsumer oAuthConsumer = new CommonsHttpOAuthConsumer(consumerKeyStr, consumerSecretStr); 
     oAuthConsumer.setTokenWithSecret(accessTokenStr, accessTokenSecretStr); 

     HttpPost httpPost = new HttpPost(
       "http://api.twitter.com/1.1/statuses/update.json?status=Hello%20Twitter%20World."); 

     oAuthConsumer.sign(httpPost); 

     HttpClient httpClient = new DefaultHttpClient(); 
     HttpResponse httpResponse = httpClient.execute(httpPost); 

     int statusCode = httpResponse.getStatusLine().getStatusCode(); 
     System.out.println(statusCode + ':' + httpResponse.getStatusLine().getReasonPhrase()); 
     System.out.println(IOUtils.toString(httpResponse.getEntity().getContent())); 
    } 
} 

Ошибка:

461 Forbidden 
{"errors":[{"message":"SSL is required","code":92}]} 

pom.xml

<properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <!-- Logging --> 
     <logback.version>1.0.13</logback.version> 
     <slf4j.version>1.7.5</slf4j.version> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>oauth.signpost</groupId> 
      <artifactId>signpost-core</artifactId> 
      <version>1.2.1.2</version> 
     </dependency> 

     <dependency> 
      <groupId>oauth.signpost</groupId> 
      <artifactId>signpost-commonshttp4</artifactId> 
      <version>1.2.1.2</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-io</groupId> 
      <artifactId>commons-io</artifactId> 
      <version>2.5</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.httpcomponents</groupId> 
      <artifactId>httpcore</artifactId> 
      <version>4.3</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-codec</groupId> 
      <artifactId>commons-codec</artifactId> 
      <version>1.10</version> 
     </dependency> 

     <!-- Logging with SLF4J & LogBack --> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>${slf4j.version}</version> 
      <scope>compile</scope> 
     </dependency> 

     <dependency> 
      <groupId>ch.qos.logback</groupId> 
      <artifactId>logback-classic</artifactId> 
      <version>${logback.version}</version> 
      <scope>runtime</scope> 
     </dependency> 

     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.12</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

ответ

1

Сообщение об ошибке говорит вам именно то, что вам нужно знать:

SSL is required

Проблема, кажется, что вы используете HTTP: // вместо https: // в коде:

http://api.twitter.com/1.1/statuses/update.json 
1
var oauth_consumer_key = "your consumer key; 
    var oauth_consumer_secret = "secret key"; 

    if (Request["oauth_token"] == null) 
    { 
     OAuthTokenResponse reqToken = OAuthUtility.GetRequestToken(
      oauth_consumer_key, 
      oauth_consumer_secret, 
      Request.Url.AbsoluteUri); 

     Response.Redirect(string.Format("https://twitter.com/oauth/authorize?oauth_token={0}", 
      reqToken.Token)); 
    } 
    else 
    { 
     string requestToken = Request["oauth_token"].ToString(); 
     string pin = Request["oauth_verifier"].ToString(); 
     var tokens = OAuthUtility.GetAccessToken(
      oauth_consumer_key, 
      oauth_consumer_secret, 
      requestToken, 
      pin); 
     OAuthTokens accesstoken = new OAuthTokens() 
     { 
      AccessToken = tokens.Token, 
      AccessTokenSecret = tokens.TokenSecret, 
      ConsumerKey = oauth_consumer_key, 
      ConsumerSecret = oauth_consumer_secret 
     }; 
     //uncomment for get likes and retweet count 
     //var response = TwitterStatus.Show(accesstoken,Convert.ToDecimal(post id), new StatusUpdateOptions() { UseSSL = true, APIBaseAddress = "https://api.twitter.com/1.1/" }); 

     TwitterResponse<TwitterStatus> response = TwitterStatus.Update(accesstoken, "Posting This Tweet From Asp.Net Website using REST API", new StatusUpdateOptions() { UseSSL = true, APIBaseAddress = "https://api.twitter.com/1.1/" }); 
     var obj = JObject.Parse(response.Content.ToString()); 
     var id = (string)obj["id"].ToString(); 
    } 
Смежные вопросы