

<https://moripro.net/gas-twitter-bot/>  
こちらを参考にして GAS からツイートするコードをかいてる途中で  
認証までは通って success 画面がでたんですがツイートテスト関数を実行すると

`You currently have Essential access which includes access to Twitter API v2
endpoints only`  
というエラーになります  
調べたところ v2 は申請なしに使えるみたいですがこのサイトのエンドポイントは申請が必要な v1 を使っているようです

<https://officeforest.org/wp/2021/05/22/gas_twitter_v2/>  
こちらのサイトを参考に  
service.fetch の引数だけ真似してかいてみたんですが

[code]

    {"title":"Forbidden","detail":"Forbidden","type":"about:blank","status":403}
    
[/code]

というレスポンスが返ってきます

403エラーなので権限の問題みたいなんですが  
OAuth 1.0a をつかっていて  
<https://developer.twitter.com/en/docs/authentication/guides/v2-authentication-
mapping>  
こちらを見ると  
Manage Tweets にチェック入っていてその中に POST /2/tweets エンドポイントは入っています

エラーメッセージから原因の調べ方がわからないので  
なにか見落としがあったり間違ってるところがあったら教えていただけるとうれしいです

以下GASのコードです

[code]

    //認証用の各種変数
    var apikey = 'xxx';
    var apisecret = 'xxx';
    
    var twitter = TwitterWebService.getInstance(
      apikey,//API Key
      apisecret//API secret key
    );
     
    //アプリを連携認証する
    function authorize() {
      twitter.authorize();
    }
     
    //認証を解除する
    function reset() {
      twitter.reset();
    }
     
    //認証後のコールバック
    function authCallback(request) {
      return twitter.authCallback(request);
    }
    
    
    // ツイートを投稿
    function postTweet() {
      
      var service  = twitter.getService();
      // var endPointUrl = 'https://api.twitter.com/1.1/statuses/update.json';
      var endPointUrl = "https://api.twitter.com/2/tweets";
      
      var message = {
        //テキストメッセージ本文
        text: 'ツイートテスト'
      }
    
      var response = service.fetch(endPointUrl, {
        method: 'post',
        muteHttpExceptions: true,
        contentType: 'application/json',
        payload: JSON.stringify(message)
        //payload: { status: 'ツイートテスト' }
      });
    
      console.log(response);
    }
    
    
[/code]

* * *

追記

API key secret をダミー文字列に変えると 403 ではなく 401 Unauthorized になるので key/secret
は正しいようです


CC BY-SA 4.0
2022-08-22T10:57:00.647
90696
2022-08-27T17:12:36.293
2022-08-22T12:02:42.640
3060
question
javascript google-apps-script twitter
twitter API で認証は通るのにツイートエンドポイントをたたくと 403 forbidden になる


初心者なので違ってたら申し訳ないですが  
response = の後の JSON.parse が抜けているせいだったりしませんか？  
違ったらわかりませんすみません


CC BY-SA 4.0
2022-08-27T17:12:36.293
90801
2022-08-27T17:12:36.293
54173
90696
answer