2017-12-28 11 views
0

私はいくつかの機能をまとめ、Googleスプレッドシートで使用する単一のGoogle Scriptsファイルにまとめました。関数は、(1)getTwitterUserFollowers(id)、(2)getTwitterUserFollowing(id)、(3)getTwitterUserName(id)および(4)postBlockTwitterUser(id)です。最初の3つの機能が完全に動作している間Google Scripts + Twitter API - POSTブロック/作成

、私は)第四は、(postBlockTwitterUser(IDを動作させることはできません得ることに保管してください:。?

"Request failed for https://api.twitter.com/1.1/blocks/create.json?screen_name=EladRatson returned code 403. Truncated server response: {"errors":[{"code":220,"message":"Your credentials do not allow access to this resource." 

を私が間違っているのは何

var CONSUMER_KEY = 'M2VyQoC2571PyNAdHmOnGYxMj'; 
 
var CONSUMER_SECRET = '8yNJGrp2W0fDRQvXgbe8zOgQWC6lQOjrxhI7M6iogLbHyanor0'; 
 

 

 

 
function getTwitterUserFollowers(id) { 
 

 
// Encode consumer key and secret 
 
    var tokenUrl = "https://api.twitter.com/oauth2/token"; 
 
    var tokenCredential = Utilities.base64EncodeWebSafe(
 
    CONSUMER_KEY + ":" + CONSUMER_SECRET); 
 

 
// Obtain a bearer token with HTTP POST request 
 
    var tokenOptions = { 
 
    headers : { 
 
     Authorization: "Basic " + tokenCredential, 
 
    "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8" 
 
    }, 
 
    method: "post", 
 
    payload: "grant_type=client_credentials" 
 
}; 
 

 
    var responseToken = UrlFetchApp.fetch(tokenUrl, tokenOptions); 
 
    var parsedToken = JSON.parse(responseToken); 
 
    var token = parsedToken.access_token; 
 

 
// Authenticate Twitter API requests with the bearer token 
 
    var apiUrl = 'https://api.twitter.com/1.1/users/show.json?screen_name='+id; 
 
    var apiOptions = { 
 
    headers : { 
 
     Authorization: 'Bearer ' + token 
 
    }, 
 
    "method" : "get" 
 
    }; 
 

 
    var responseApi = UrlFetchApp.fetch(apiUrl, apiOptions); 
 
    var result = ""; 
 

 
    if (responseApi.getResponseCode() == 200) { 
 

 
    // Parse the JSON encoded Twitter API response 
 
    var tweets = JSON.parse(responseApi.getContentText()); 
 
    return tweets.followers_count 
 
    } 
 

 
    Logger.log(result); 
 

 
} 
 

 

 

 
function getTwitterUserFollowing(id) { 
 

 
// Encode consumer key and secret 
 
var tokenUrl = "https://api.twitter.com/oauth2/token"; 
 
var tokenCredential = Utilities.base64EncodeWebSafe(
 
    CONSUMER_KEY + ":" + CONSUMER_SECRET); 
 

 
// Obtain a bearer token with HTTP POST request 
 
var tokenOptions = { 
 
    headers : { 
 
    Authorization: "Basic " + tokenCredential, 
 
    "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8" 
 
    }, 
 
    method: "post", 
 
    payload: "grant_type=client_credentials" 
 
}; 
 

 
var responseToken = UrlFetchApp.fetch(tokenUrl, tokenOptions); 
 
var parsedToken = JSON.parse(responseToken); 
 
var token = parsedToken.access_token; 
 

 
// Authenticate Twitter API requests with the bearer token 
 
var apiUrl = 'https://api.twitter.com/1.1/users/show.json?screen_name='+id; 
 
var apiOptions = { 
 
    headers : { 
 
    Authorization: 'Bearer ' + token 
 
    }, 
 
    "method" : "get" 
 
}; 
 

 
var responseApi = UrlFetchApp.fetch(apiUrl, apiOptions); 
 

 
var result = ""; 
 

 
if (responseApi.getResponseCode() == 200) { 
 

 
    // Parse the JSON encoded Twitter API response 
 
    var tweets = JSON.parse(responseApi.getContentText()); 
 
    return tweets.friends_count 
 

 
} 
 

 
Logger.log(result); 
 

 
} 
 

 

 

 
function getTwitterUserName(id) { 
 

 
// Encode consumer key and secret 
 
var tokenUrl = "https://api.twitter.com/oauth2/token"; 
 
var tokenCredential = Utilities.base64EncodeWebSafe(
 
    CONSUMER_KEY + ":" + CONSUMER_SECRET); 
 

 
// Obtain a bearer token with HTTP POST request 
 
var tokenOptions = { 
 
    headers : { 
 
    Authorization: "Basic " + tokenCredential, 
 
    "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8" 
 
    }, 
 
    method: "post", 
 
    payload: "grant_type=client_credentials" 
 
}; 
 

 
var responseToken = UrlFetchApp.fetch(tokenUrl, tokenOptions); 
 
var parsedToken = JSON.parse(responseToken); 
 
var token = parsedToken.access_token; 
 

 
// Authenticate Twitter API requests with the bearer token 
 
var apiUrl = 'https://api.twitter.com/1.1/users/show.json?screen_name='+id; 
 
var apiOptions = { 
 
    headers : { 
 
    Authorization: 'Bearer ' + token 
 
    }, 
 
    "method" : "get" 
 
}; 
 

 
var responseApi = UrlFetchApp.fetch(apiUrl, apiOptions); 
 

 
var result = ""; 
 

 
if (responseApi.getResponseCode() == 200) { 
 

 
    // Parse the JSON encoded Twitter API response 
 
    var tweets = JSON.parse(responseApi.getContentText()); 
 
    return tweets.name 
 

 
} 
 

 
Logger.log(result); 
 

 
} 
 

 

 

 

 
function postBlockTwitterUser(id) { 
 

 
// Encode consumer key and secret 
 
var tokenUrl = "https://api.twitter.com/oauth2/token"; 
 
var tokenCredential = Utilities.base64EncodeWebSafe(
 
    CONSUMER_KEY + ":" + CONSUMER_SECRET); 
 

 
// Obtain a bearer token with HTTP POST request 
 
var tokenOptions = { 
 
    headers : { 
 
    Authorization: "Basic " + tokenCredential, 
 
    "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8" 
 
    }, 
 
    method: "post", 
 
    payload: "grant_type=client_credentials" 
 
}; 
 

 
var responseToken = UrlFetchApp.fetch(tokenUrl, tokenOptions); 
 
var parsedToken = JSON.parse(responseToken); 
 
var token = parsedToken.access_token; 
 

 
// Authenticate Twitter API requests with the bearer token 
 
var apiUrl = 'https://api.twitter.com/1.1/blocks/create.json?screen_name='+id; 
 
var apiOptions = { 
 
    headers : { 
 
    Authorization: 'Bearer ' + token 
 
    }, 
 
    "method" : "post" 
 
}; 
 

 
var responseApi = UrlFetchApp.fetch(apiUrl, apiOptions); 
 

 
var result = ""; 
 

 
if (responseApi.getResponseCode() == 200) { 
 

 
    // Parse the JSON encoded Twitter API response 
 
    var tweets = JSON.parse(responseApi.getContentText()); 
 
    return tweets.name 
 

 
} 
 

 
Logger.log(result); 
 

 
}

答えて

0

あなたはアプリのみの認証にOAuthを使用しようとしているが、あなたはトンを使用するためには、ユーザートークンで3本足の認証を使用する必要があります彼はエンドポイントをブロックする。エンドポイントに投稿する場合は、4つのトークン(コンシューマーキーとシークレット、ユーザートークンとシークレット)をすべて含むようにコードを変更する必要があります。

0

@ andy-piper上記のコードを3足の認証用に変更できますか?

私も上記のスクリプトを使用していますが、それを使用してツイートを投稿する方法はわかりません。私はアクセストークンと秘密を持っていますが、その使用方法はわかりません。

関連する問題