【问题标题】:Implementing Twitter API application-only authentication in Javascript在 Javascript 中实现 Twitter API 仅应用程序身份验证
【发布时间】:2018-07-17 04:56:54
【问题描述】:

我正在尝试创建一个简单的网络应用程序,它可以导出您关注的人(“朋友”)的列表。我正在使用带有twitter package 的node.js。我想首先使用我的 Consumer KeyConsumer Secret 来获取 Bearer Token,如 here 所示。然后我想使用Consumer SecretConsumer Key和新创建的Bearer Token来验证twitter。

我的问题是我正在使用异步函数request.post 获取我的承载令牌,但我不知道如何将令牌传递给我用来通过 twitter 进行身份验证的函数。它是异步的,所以我不能只做(伪代码)

function getBearerToken() { return request.post(bearerTokenParameters) }
var client = new Twitter({
    consumer_secret: CONSUMER_SECRET,
    consumer_key: CONSUMER_KEY,
    bearer_token: getBearerToken()})

因为request 是异步的并且不返回响应。尝试做类似(伪代码)

request-promise.post(bearerTokenParameters)
    .next( (response) => {
        return new Twitter({
            consumer_secret: CONSUMER_SECRET,
            consumer_key: CONSUMER_KEY,
            bearer_token: response.bearer_token 
        })
    }
)

但现在我不能使用我刚刚创建的Twitter 对象。

我知道我可以使用script 生成我的不记名令牌,然后手动输入它,但如果我已经拥有所有信息,似乎必须有更好的方法。

【问题讨论】:

  • 既然你知道你可以预先生成不记名令牌,你为什么选择在代码中做呢?
  • @JoshAbraham 我知道我可以提前做,但我觉得没有必要。我正在 glitch.com 上制作应用程序,我喜欢可以在任何地方开发它,甚至是移动设备。每次更改 API 密钥时都需要生成令牌,这会有点阻碍。如果我不能解决这个问题,我可能会这样做。

标签: javascript node.js asynchronous twitter twitter-oauth


【解决方案1】:
var client;
function getBearerToken() 
{ 
   return new Promise(function(resolve, reject) {
       request.post(bearerTokenParameters).then(function(response) {
           return resolve(response);
       }).catch(function(err) {
           return reject(err)
       }) 
   }
}

getBearerToken()
    .then( (response) => {
        client = new Twitter({
            consumer_secret: CONSUMER_SECRET,
            consumer_key: CONSUMER_KEY,
            bearer_token: response.bearer_token 
        })
    }

【讨论】:

  • 这不起作用; client 不会改变,因为 request(和 request-promise,一个允许您将其与 Promise 一起使用的版本)是异步的。除非我应该在回调中使用 client 对象做所有事情?
  • 更新了我的答案。关于您的异步评论,这就是承诺的用途。使部分代码仅在 promise 已解决时执行。希望有效。
  • 谢谢。为了简化我必须做的回调数量,我可能只是手动输入 Bearer Token,这样我就可以在初始化时进行身份验证。
猜你喜欢
  • 1970-01-01
  • 2018-12-26
  • 2015-06-10
  • 2013-04-29
  • 1970-01-01
  • 2013-06-13
  • 2013-03-08
  • 2013-09-05
  • 2013-03-08
相关资源
最近更新 更多