如何用Google Apps Script调用Twitter API获取指定用户粉丝列表?
解决Twitter API v2获取粉丝列表的401未授权问题
你的代码存在三个核心问题导致401错误,以下是具体修正方案:
问题分析
- API端点错误:Twitter API v2的
/users/{id}/followers接口要求传入用户ID,不能直接使用用户名调用。 - 认证方式错误:Twitter API v2需要OAuth 1.0a签名认证,你直接把密钥放入headers的方式不符合要求。
- Headers格式错误:未按照OAuth 1.0a规范生成合法的认证头,API无法识别你的身份。
修正步骤
1. 添加OAuth1库到Google Apps Script项目
打开脚本编辑器,依次点击「资源」→「库」,输入库ID 1CXDCY5sqT9ph64fFwSzVtXnbjpSfWdRymafDrtIZ7Z_hwysTY7IIhi7s,选择最新版本后点击添加。
2. 修正后的完整代码
function getFollowers() { // 替换为你的Twitter开发者密钥 const twitterKeys = { consumerKey: '你的Consumer Key', consumerSecret: '你的Consumer Secret', accessToken: '你的Access Token', accessTokenSecret: '你的Access Token Secret' }; const targetUsername = '目标用户名'; // 例如"Twitter" const oAuthService = OAuth1.createService('Twitter') .setAccessTokenUrl('https://api.twitter.com/oauth/access_token') .setRequestTokenUrl('https://api.twitter.com/oauth/request_token') .setAuthorizationUrl('https://api.twitter.com/oauth/authorize') .setConsumerKey(twitterKeys.consumerKey) .setConsumerSecret(twitterKeys.consumerSecret) .setAccessToken(twitterKeys.accessToken, twitterKeys.accessTokenSecret); // 第一步:通过用户名获取用户ID const userIdUrl = `https://api.twitter.com/2/users/by/username/${targetUsername}?user.fields=id`; const userIdResponse = UrlFetchApp.fetch(userIdUrl, { headers: { Authorization: oAuthService.getAuthorizationHeader(userIdUrl, 'GET') }, muteHttpExceptions: true }); const userIdData = JSON.parse(userIdResponse.getContentText()); if (userIdData.errors) { console.error('获取用户ID失败:', userIdData.errors); return; } const userId = userIdData.data.id; // 第二步:获取用户粉丝列表 const followersUrl = `https://api.twitter.com/2/users/${userId}/followers?user.fields=username,name,id&max_results=100`; const followersResponse = UrlFetchApp.fetch(followersUrl, { headers: { Authorization: oAuthService.getAuthorizationHeader(followersUrl, 'GET') }, muteHttpExceptions: true }); const followersData = JSON.parse(followersResponse.getContentText()); if (followersData.errors) { console.error('获取粉丝列表失败:', followersData.errors); } else { console.log('粉丝列表:', followersData.data); // 如需获取更多粉丝,使用followersData.meta.next_token进行分页请求 if (followersData.meta.next_token) { console.log('下一页请求token:', followersData.meta.next_token); } } }
注意事项
- 确保你的Twitter开发者账号已启用API v2权限,且所有密钥完全正确(替换代码中的占位符)。
- API默认单次返回最多100条粉丝数据,若需获取全部粉丝,需循环使用
next_token参数发起分页请求。 - 严格遵守Twitter API的调用速率限制,避免触发限流机制。
内容的提问来源于stack exchange,提问作者EagleEye
相关产品推荐
相关产品推荐

