【问题标题】:Twitter OAuth Pin based authorization 'oob' in Google Apps ScriptGoogle Apps 脚本中基于 Twitter OAuth Pin 的授权“oob”
【发布时间】:2015-03-31 05:35:42
【问题描述】:

我正在尝试在我的 Google Apps 脚本中使用 Twitter Pin-based authorization 以最终代表其他用途发送推文。

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

我当前的 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);

为了测试,我在每次测试运行之前将刻度设置为值here nonce 是一个介于 111111 和 9999999 之间的随机数,在每次测试运行之前都会重新生成。 我使用从 linq2twitter project 提取的一些 c# 代码生成的 oauth 签名

我怀疑问题出在签名上。我已经阅读了twitter documentation on creating a signature,并且我认为 C# 代码正确地执行了它,但我不确定。

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

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

请帮忙。

【问题讨论】:

    标签: javascript twitter oauth google-apps-script twitter-oauth


    【解决方案1】:

    Apps Script 提供了一个与 UrlFetchApp 一起使用的 Oauth API,他们甚至在他们的示例中使用了 twitter。尽可能与那些合作,解决签名生成问题确实很麻烦。

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

    如果您绝对必须从头开始,最好的方法是让请求与现有库(如您提到的 c# 库)一起使用,然后努力让您的应用程序脚本生成完全相同的请求。

    我知道你现在正在做什么,所以这可能只是在传出请求中对你的签名进行 base64 编码的问题:

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

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

    【讨论】:

    • 对不起,我应该更清楚一点:我不一定想手动完成,而是更愿意使用内置的 URLFetchApp Oauth API。我一直在关注您链接到的 twitter 示例,这就是我什至走到这一步的原因。我可以阅读推文并将其发布到我的帐户,但正是基于 PIN 的授权导致了我的问题。我真正需要的是在应用程序脚本中使用或不使用 Oauth API 的代码示例。我什至考虑过将所有内容移至 App Engine 并使用 PHP 或 Python 库,但正如您所说,我认为这会导致其他问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 2022-07-14
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多