#android #twitter #oauth #postman #twitter-oauth
Вопрос:
Я интегрирую статусы Twitter/update.json API в приложение для Android. Я использую модернизацию для API. Этот API необходим OAuth 1.0
, и я генерирую все необходимые значения и вызываю API, который дает мне этот ответ:
{"errors":[{"code":89,"message":"Invalid or expired token."}]}
Когда я передаю все необходимые значения почтальону, он работает.
Вот как я передаю значения почтальону (форма-URL-код):
Ниже приведена строка, которую я сгенерировал в коде и передал в заголовке в Authorization
OAuth oauth_consumer_key="55pQiiN7hMwSEKMDqc0wYcH",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1617275741",oauth_nonce="675889204f9748a98a7f24c8c313d9bf",oauth_version="1.0",oauth_signature="vuH+pCkPNNEr9CnNzT6wXCj2k=",oauth_token="2997731-kzHvqPH2NeYnHOV6tFB1wtvXlk1qzUFk3pqUHA",oauth_token_secret="lDOo0Ozyjq2ngdGEr52IOPGxxbsXbWACxZEXLrvlcsO5p",oauth_consumer_secret="tqMmRHJ4kGbykxbOaYD1ZHJgfsKfFSCySpUOGpnIWWH6KjJ"
И это дает мне ошибку, как упоминалось выше.
Как я создаю подпись:
private static String computeSignature(String baseString, String keyString) throws GeneralSecurityException, UnsupportedEncodingException {
SecretKey secretKey = null;
byte[] keyBytes = keyString.getBytes();
secretKey = new SecretKeySpec(keyBytes, "HmacSHA1");
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(secretKey);
byte[] text = baseString.getBytes();
return new String(Base64.encodeBase64(mac.doFinal(text))).trim();
}
Я что-нибудь упускаю? Как я могу устранить эту ошибку?