Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Error handling callback: token mismatch(行 270、ファイル「Service」)

エラーが出てOAuth認証ができない(解決済み)

Google Apps ScriptでTwitter APIと連携しBotを作ろうとしています。
ライブラリ「TwitterWebService」「OAuth1」等を利用してOAuth認証をしたいと考えているのですが、エラーが出てできません。
詳しく言うと、1回認証したのですが、コード①を叩いてもう一度認証し直そうとしたところ、できません。

↓コード①

var twitter = TwitterWebService.getInstance([API Key],[API secret key])
twitter.reset();

何度かAPIキーを再発行してもだめでした。

発生している問題・エラー

↓コード②

var twitter = TwitterWebService.getInstance([API Key],[API secret key]);
twitter.authorize();

↓エラー

Error handling callback: token mismatch(行 270、ファイル「Service」)

解決

↓こちらの方のソースコードを入力してもう一度コード②を実行したところ、無事解決しました。
http://pineplanter.moo.jp/non-it-salaryman/2021/07/17/gas-twitter/

var CONSUMER_KEY = 'xxxxx';
var CONSUMER_SECRET = 'xxxxx';
var TOKEN = 'xxxxx';
var TOKEN_SECRET = 'xxxxx';

function run() {
  var service = getService();
  var twitter = TwitterWebService.getInstance(CONSUMER_KEY,CONSUMER_SECRET);
  twitter.authorize();
} 
 
function doGet() {
  return HtmlService.createHtmlOutput(ScriptApp.getService().getUrl());
}
 
function reset() {
  var service = getService();
  service.reset();
}
 
function getService() {
  return OAuth1.createService('Twitter')
      .setConsumerKey(CONSUMER_KEY)
      .setConsumerSecret(CONSUMER_SECRET)
      .setAccessToken(TOKEN, TOKEN_SECRET)
      .setAccessTokenUrl('https://api.twitter.com/oauth/access_token')
      .setRequestTokenUrl('https://api.twitter.com/oauth/request_token')
      .setAuthorizationUrl('https://api.twitter.com/oauth/authorize')
      .setCallbackFunction('authCallback')
}

function authCallback(request) {
  var service = getService();
  var authorized = service.handleCallback(request);
  if (authorized) {
    return HtmlService.createHtmlOutput('succeeded');
  } else {
    return HtmlService.createHtmlOutput('failed');
  }
}

原因

結局原因はわかりませんでした。どなたかご存知でしたら教えて下さい。

0 likes

1Answer

私の場合は、OAuth1のgetService()の関数名が合っていませんでした。
私はTwitterWebServiceは使いませんでしたので、参考になるかは分かりませんが、
var service = getService();
のgetService()のところを別の関数名にしていました。

0Like

Your answer might help someone💌