gpt4 book ai didi

使用 Twitter 编写奇怪的不受控制的异常

转载 作者:行者123 更新时间:2023-12-04 17:22:01 24 4
gpt4 key购买 nike

我对 Scribe 还很陌生,但是当我尝试通过 Twitter 进行身份验证时,出现了一个奇怪的错误。
我的代码与 TwitterExample 几乎相同:

        OAuthService service = new ServiceBuilder()
.provider(TwitterApi.class)
.apiKey("XXXXXXXXXXXXXX<<custom>>XXXXXXXXXXXXXXX")
.apiSecret("YYYYYYYYYYYYYYYY<<custom>>YYYYYYYYYYYYYYYYYYYYYYYYY")
.debug()
.build();

Token requestToken = service.getRequestToken();

Log.i("OAUTH LINK", service.getAuthorizationUrl(requestToken));

Verifier verifier = new Verifier("verifier you got from the user");
Token accessToken = service.getAccessToken(requestToken, verifier);

OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL);
service.signRequest(accessToken, request);
response = request.send();
Log.i("OAUTH RESPONSE",response.getBody());

返回的调试输出是:
  • I/System.out(1776):从 http://api.twitter.com/oauth/request_token 获取请求 token
  • I/System.out(1776):将 oauth_callback 设置为 oob
  • I/System.out(1776):生成签名...
  • I/System.out(1776):使用 base64 编码器:CommonsCodec
  • I/的System.out(1776):基本字符串是:POST&HTTP%3A%2F%2Fapi.twitter.com%2Foauth%2Frequest_token&oauth_callback%3Doob%26oauth_consumer_key%3DXXXXXXXXXXXXXXXXXXXXX%26oauth_nonce%3D1095830595%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1391024186%26oauth_version %3D1.0
  • I/System.out(1776):签名是:In0u/SlHz9cr5NLAQK56kALJ3hI=
  • I/System.out(1776): 附加了额外的 OAuth 参数:{ oauth_callback -> oob , oauth_signature -> In0u/SlHz9cr5NLAQK56kALJ3hI= , oauth_version -> 1.0 , oauth_nonce -> 1095oxxx-> oauth_nonce -> 10958 o xxx _ o xxx _ o xxx _ o xxx _ o xxx _ o xxx _ o xxx _ o xxx , oauth_timestamp -> 1391024186 }
  • I/System.out(1776): 使用 Http Header 签名
  • I/System.out(1776): 发送请求...
  • D/dalvikvm(1776):GC_FOR_ALLOC 释放 174K,3% 释放 13188K/13575K,暂停 134 毫秒
  • I/System.out(1776):响应状态码:403
  • I/System.out(1776):响应体:
  • W/System.err(1776): java.lang.IllegalArgumentException: 响应正文不正确。无法从空字符串中提取 token
  • W/System.err(1776):在 org.scribe.utils.Preconditions.check(Preconditions.java:84)
  • W/System.err(1776):在 org.scribe.utils.Preconditions.checkEmptyString(Preconditions.java:44)
  • W/System.err(1776):在 org.scribe.extractors.TokenExtractorImpl.extract(TokenExtractorImpl.java:26)
  • W/System.err(1776):在 org.scribe.oauth.OAuth10aServiceImpl.getRequestToken(OAuth10aServiceImpl.java:64)
  • W/System.err(1776):在 org.scribe.oauth.OAuth10aServiceImpl.getRequestToken(OAuth10aServiceImpl.java:40)
  • W/System.err(1776):在 org.scribe.oauth.OAuth10aServiceImpl.getRequestToken(OAuth10aServiceImpl.java:45)
  • W/System.err(1776):在 com.roundmesa.twitter.TwitterLoginTask.doInBackground(TwitterLoginTask.java:45)
  • W/System.err(1776):在 com.roundmesa.twitter.TwitterLoginTask.doInBackground(TwitterLoginTask.java:1)
  • W/System.err(1776):在 android.os.AsyncTask$2.call(AsyncTask.java:264)
  • W/System.err(1776):在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
  • W/System.err(1776):在 java.util.concurrent.FutureTask.run(FutureTask.java:137)
  • W/System.err(1776):在 android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
  • W/System.err(1776):在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
  • W/System.err(1776):在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
  • W/System.err(1776): 在 java.lang.Thread.run(Thread.java:856)

  • 其他人发现了这个错误? (它必须绝对适合新手,但我在那里找不到类似的东西......

    谢谢!

    最佳答案

    我最近也发生了这种情况。问题是 Twitter 开始拒绝常规连接,并且默认情况下,Scribe 不使用 SSL。修复方法相当简单:不使用常规的 Scribe Twitter API 类,而是使用 SSL 类:

    final OAuthService service = new ServiceBuilder()
    .provider(**TwitterApi.SSL.class**)
    .apiKey(...)
    .apiSecret(...)
    .callback(...)
    .build();

    关于使用 Twitter 编写奇怪的不受控制的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21441252/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com