0

我正在使用带有 Node-Twitter 库的 Loopback Third Party Login Passport 进行 api 调用。

我创建了

var client = new Twitter({
  consumer_key: '',
  consumer_secret: '',
  access_token_key: '',
  access_token_secret: ''
});

这是 node-twitter 工作所必需的,我为我的 twitter 帐户手动指定了所有这些凭据,因为我无法从我的 accountIdentity 模型中获取令牌和 tokenSecret。

我有一个“添加 twitter 帐户”按钮,它将用户重定向到 Twitter 授权页面并实现 oauth,然后将用户重定向回页面(在本地计算机上)但在实时服务器上它重定向到 /auth/twitter,然后什么也没有.

我进行 twitter api 调用,例如朋友/ID、用户/查找、帐户/verify_credentials,它们在我的本地计算机上工作正常。我希望他们也能在实时服务器上工作,但他们没有。

  1. 在 apps.twitter.com 我的回调 URL 设置为http://dev.mysite.com/auth/twitter/callback
  2. 提供者.json

    { "twitter-login": { "provider": "twitter", "authScheme": "oauth", "module": "passport-twitter", "callbackURL": "dev.mysite.com/auth/twitter/callback ","authPath":"dev.mysite.com/auth/twitter","callbackPath":"dev.mysite.com/auth/twitter/callback","successRedirect":"dev.mysite.com","failureRedirect ": "dev.mysite.com/login", "consumerKey": "我的密钥在这里指定", "consumerSecret": "我的密钥在这里指定", "failureFlash": true } }

(我尝试“按原样”保留它,这意味着删除 dev.mysite.com,我还尝试在 url 之前添加 http://)

  1. npm 包在服务器上都是最新的

我的问题是如何使它现在至少为 1 个(我的)帐户工作

4

1 回答 1

1

〜3天后解决了问题:我应该注意细节

Loopback在全局配置中为所有 API 调用添加“/api/” 。否则,它将路径视为路线。

提供者.json

{“twitter-login”:{“provider”:“twitter”,“authScheme”:“oauth”,“模块”:“passport-twitter”,“callbackURL”:“/api/auth/twitter/callback”,“ authPath”:“/api/auth/twitter”,“callbackPath”:“/api/auth/twitter/callback”,“successRedirect”:“/”,“failureRedirect”:“/login”,“consumerKey”:“key ", "consumerSecret": "key", "failureFlash": true } }

例如,在客户端,我必须将“/api/”添加到每个 API 调用 url

function fetchFollowers() {
  const URL = "/api/fetchfollowers";
  return fetch(URL, {method: "GET"
 })
    .then(response=>  Promise.all([response, response.json()]));
}

<a href="/api/auth/twitter">Add Twitter Account</a>

代替

<a href="/auth/twitter">Add Twitter Account</a>
于 2017-09-14T14:45:36.270 回答