Google Apps Script 中基于 Twitter OAuth Pin 的授权“oob”

Twitter OAuth Pin based authorization 'oob' in Google Apps Script

本文关键字:Pin 授权 oob OAuth Twitter Script Apps Google      更新时间:2023-09-26

我正在尝试在我的Google Apps Script中使用基于Twitter Pin的授权,以最终代表其他用途发送推文。

我坦率地承认,我不知道自己在做什么,但我在互联网上阅读了很多信息,觉得我已经尝试了一切。

我目前的Google Apps Script JavaScript代码:

var method = 'post';
var url = 'https://api.twitter.com/oauth/request_token';
var consumerKey = '[my consumer key]';
var ticks = '1422745454';
var nonce = '6826266';
var options = {
  'method': method,
  'oauth_callback': 'oob',
  'oauth_consumer_key': consumerKey,
  'oauth_nonce': nonce,
  'oauth_signature': 'cIFeptE5HjHp7xrp%2BZt9xFhHox4%3D',
  'oauth_signature_method': 'HMAC-SHA1',
  'oauth_timestamp': ticks,
  'oauth_version': '1.0'
};
var response = UrlFetchApp.fetch(url, options);

对于测试,我将每次测试运行前的刻度设置为此处的值随机数是介于 111111 和 9999999 之间的随机数,在每次测试运行之前重新生成。我用一些从 linq2twitter 项目中提取的 c# 代码生成的 oauth 签名

我怀疑问题是签名。我已经阅读了有关创建签名的 Twitter 文档,我认为 C# 代码正在正确执行此操作,但我不确定。

问题是无论我尝试什么,我总是收到此错误:"请求失败 https://api.twitter.com/oauth/request_token 返回代码 401。截断的服务器响应:无法验证 oauth 签名和令牌(使用 muteHttpExceptions 选项检查完整响应)"

我一直试图在Google Apps Script中找到基于Twitter Pin的授权示例,但到目前为止还没有找到任何东西。我尝试用C#,PHP等翻译示例也失败了。

请帮忙。

Apps Script 提供了一个与 UrlFetchApp 配合使用的 Oauth API,他们甚至在他们的示例中使用 twitter。 如果可能的话,与这些人合作,对签名生成进行故障排除确实很麻烦。

https://developers.google.com/apps-script/reference/url-fetch/o-auth-confighttps://developers.google.com/apps-script/articles/twitter_tutorial

如果绝对必须从头开始执行此操作,最好的方法是获取使用现有库(如你提到的 c# 库)的请求,然后努力获取应用脚本以生成完全相同的请求。

我感觉这就是您现在正在做的事情,因此可能只是在传出请求中对您的签名进行 base64 编码的问题:

https://developers.google.com/apps-script/reference/utilities/utilities#base64Encode(String)

最终,在应用程序脚本中手动执行整个Oauth过程非常困难。大约一年前,当我从头开始尝试这样的事情时,我最终放弃了,而是使用了部署到Google App Engine的Python应用程序。我将来自 App Script 的请求提交到 App Engine 应用程序,App Engine 应用程序会处理 Oauth 并将我的请求中继到外部服务,然后再将请求返回到我的 App Script。 这种方法本身就很复杂。