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

 梁lxc_131 发布于 2023-01-30 15:13

我对Scribe很新,但是当我尝试通过Twitter进行身份验证时,一个奇怪的错误就会上升.我的代码与TwitterExample完全相同:

        OAuthService service = new ServiceBuilder()
            .provider(TwitterApi.class)
            .apiKey("XXXXXXXXXXXXXX<>XXXXXXXXXXXXXXX")
            .apiSecret("YYYYYYYYYYYYYYYY<>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获取请求令牌

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 - > 1095830595,oauth_signature_method - > HMAC-SHA1,oauth_consumer_key - > XXXXXXXXXXXXXXXXXXXX, oauth_timestamp - > 1391024186}

I/System.out(1776):使用Http Header签名

I/System.out(1776):发送请求...

D/dalvikvm(1776):GC_FOR_ALLOC释放174K,3%免费13188K/13575K,暂停134ms

I/System.out(1776):响应状态码:403

I/System.out(1776):响应主体:

W/System.err(1776):java.lang.IllegalArgumentException:响应正文不正确.无法从空字符串中提取令牌

W/System.err(1776):at org.scribe.utils.Preconditions.check(Preconditions.java:84)

W/System.err(1776):at org.scribe.utils.Preconditions.checkEmptyString(Preconditions.java:44)

W/System.err(1776):at org.scribe.extractors.TokenExtractorImpl.extract(TokenExtractorImpl.java:26)

W/System.err(1776):at org.scribe.oauth.OAuth10aServiceImpl.getRequestToken(OAuth10aServiceImpl.java:64)

W/System.err(1776):at org.scribe.oauth.OAuth10aServiceImpl.getRequestToken(OAuth10aServiceImpl.java:40)

W/System.err(1776):at org.scribe.oauth.OAuth10aServiceImpl.getRequestToken(OAuth10aServiceImpl.java:45)

W/System.err(1776):at com.roundmesa.twitter.TwitterLoginTask.doInBackground(TwitterLoginTask.java:45)

W/System.err(1776):at com.roundmesa.twitter.TwitterLoginTask.doInBackground(TwitterLoginTask.java:1)

W/System.err(1776):在android.os.AsyncTask $ 2.call(AsyncTask.java:264)

W/System.err(1776):at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:305)

W/System.err(1776):at 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):at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)

W/System.err(1776):at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:569)

W/System.err(1776):at java.lang.Thread.run(Thread.java:856)

有人发现了这个错误吗?(对于新手来说一定是绝对的,但我找不到类似的东西......

谢谢!

1 个回答
  • 这最近发生在我身上.问题是Twitter开始拒绝常规连接,默认情况下,Scribe不使用SSL.修复非常简单:使用SSL,而不是使用常规的Scribe Twitter API类:

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

    2023-01-30 15:17 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有