【问题标题】:Twitter. Verify_credentials. OAuth Api. Error "Could not authenticate you." Include_email=true推特。验证_凭据。 OAuth API。错误“无法对您进行身份验证。” include_email=true
【发布时间】:2018-02-24 05:03:43
【问题描述】:

如果我包含参数“Include_email=true”,则会收到错误消息“无法对您进行身份验证。”

这里是代码。请帮忙。

public final static String VERIFY_CREDENTIALS_URL ="https://api.twitter.com/1.1/account/verify_credentials.json";

    public final static String AUTHORIZATION_VERIFY_CREDENTIALS = "OAuth " +
            "oauth_consumer_key=\"{key}\", " +
            "oauth_signature_method=\"" + SIGNATURE_METHOD + "\", " +
            "oauth_timestamp=\"{ts}\", " +
            "oauth_nonce=\"{nonce}\", " +
            "oauth_version=\"1.0\", " +
            "oauth_signature=\"{signature}\", " +
            "oauth_token=\"{token}\"";

    public static TwitterVerifyCredentials getVerifyCredentials(String appKey, String appSecret, TwitterAccessToken accessToken) throws GeneralSecurityException, IOException {
        String ts = "" + TimeUtility.now().getTime()/1000;
        String oauth_nonce = UUID.randomUUID().toString().replaceAll("-", "");
        String parameters = "oauth_consumer_key=" + appKey + "&oauth_nonce=" + oauth_nonce + "&oauth_signature_method=" + SIGNATURE_METHOD + "&oauth_timestamp=" + ts + "&oauth_token=" + encode(accessToken.getToken()) + "&oauth_version=1.0";
        String signature = "GET&" + encode(VERIFY_CREDENTIALS_URL) + "&" + encode(parameters);
        System.out.println(signature);

        String result = TwitterOAuth.AUTHORIZATION_VERIFY_CREDENTIALS;
        result = StringUtils.replace(result, "{nonce}", oauth_nonce);
        result = StringUtils.replace(result, "{ts}", "" + ts);
        result = StringUtils.replace(result, "{key}", appKey);
        result = StringUtils.replace(result, "{signature}", encode(computeSignature(signature, appSecret + "&" + encode(accessToken.getTokenSecret()))));
        result = StringUtils.replace(result, "{token}", encode(accessToken.getToken()));

        HashMap<String, String> headers = new HashMap<>();
        headers.put("Authorization", result);

        String s = SiteFunctions.urlGet(VERIFY_CREDENTIALS_URL+"?include_email=true", headers);
        System.out.println(s);
        return new TwitterVerifyCredentials(); // while testing
    }

如果我删除“?include_email=true”,一切正常!

【问题讨论】:

    标签: java api twitter oauth


    【解决方案1】:

    VERIFY_CREDENTIALS_URL 在你的程序中应该加上?include_email=true。如果你想从 Twitter OAuth api 获取电子邮件,签名中的 url 应该是?include_email=true

    【讨论】:

      猜你喜欢
      • 2011-08-04
      • 2017-07-11
      • 1970-01-01
      • 2013-02-15
      • 2014-05-01
      • 2021-04-14
      • 1970-01-01
      • 2022-01-01
      • 2023-03-15
      相关资源
      最近更新 更多