Node.js Loopback Framework + Twitter oauth 在实时服务器上不工作
Node.js Loopback Framework + Twitter oauth doesn't work on a live server
我将环回第三方登录护照与 Node-Twitter 库一起用于 api 调用。
我创造了
var client = new Twitter({
consumer_key: '',
consumer_secret: '',
access_token_key: '',
access_token_secret: ''
});
这是 node-twitter 工作所必需的,我为我的 twitter 帐户手动指定了所有这些凭据,因为我无法从我的 accountIdentity 模型中获取令牌和 tokenSecret。
我有一个 'add twitter account' 按钮,它将用户重定向到 Twitter 授权页面并实施 oauth,然后将用户重定向回该页面(在本地机器上),但在实时服务器上它重定向到 /auth/twitter 然后什么都没有。
我在 twitter api 调用 friends/ids、users/lookup、account/verify_credentials,它们在我的本地机器上工作正常。我希望他们也能在实时服务器上工作,但他们没有。
- 在 apps.twitter.com 我的回调 URL 设置为 http://dev.mysite.com/auth/twitter/callback
providers.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": "my key is specified here",
"consumerSecret": "my key is specified here",
"failureFlash":真
}
}
(我尝试将其保留 "as is",这意味着删除 dev.mysite.com,并且我还尝试在 url 之前添加 http://)
- npm 包在服务器上都是最新的
我的问题是现在如何让它至少对 1 个(我的)帐户有效
~3天后解决问题:我应该注意细节
环回将全局配置中的 "/api/" 添加到所有 API 调用。否则,它将路径视为一条路线。
providers.json :
{
"twitter-login":{
"provider": "twitter",
"authScheme": "oauth",
"module": "passport-twitter",
"callbackURL": "/api/auth/twitter/callback",
"authPath": "/api/auth/twitter",
"callbackPath": "/api/auth/twitter/callback",
"successRedirect": "/",
"failureRedirect": "/登录",
"consumerKey": "key",
"consumerSecret": "key",
"failureFlash": 是的
}
}
而在客户端,我必须向每个 API 调用 url 添加 "/api/"
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>
我将环回第三方登录护照与 Node-Twitter 库一起用于 api 调用。
我创造了
var client = new Twitter({
consumer_key: '',
consumer_secret: '',
access_token_key: '',
access_token_secret: ''
});
这是 node-twitter 工作所必需的,我为我的 twitter 帐户手动指定了所有这些凭据,因为我无法从我的 accountIdentity 模型中获取令牌和 tokenSecret。
我有一个 'add twitter account' 按钮,它将用户重定向到 Twitter 授权页面并实施 oauth,然后将用户重定向回该页面(在本地机器上),但在实时服务器上它重定向到 /auth/twitter 然后什么都没有。
我在 twitter api 调用 friends/ids、users/lookup、account/verify_credentials,它们在我的本地机器上工作正常。我希望他们也能在实时服务器上工作,但他们没有。
- 在 apps.twitter.com 我的回调 URL 设置为 http://dev.mysite.com/auth/twitter/callback
providers.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": "my key is specified here", "consumerSecret": "my key is specified here", "failureFlash":真 } }
(我尝试将其保留 "as is",这意味着删除 dev.mysite.com,并且我还尝试在 url 之前添加 http://)
- npm 包在服务器上都是最新的
我的问题是现在如何让它至少对 1 个(我的)帐户有效
~3天后解决问题:我应该注意细节
环回将全局配置中的 "/api/" 添加到所有 API 调用。否则,它将路径视为一条路线。
providers.json :
{ "twitter-login":{ "provider": "twitter", "authScheme": "oauth", "module": "passport-twitter", "callbackURL": "/api/auth/twitter/callback", "authPath": "/api/auth/twitter", "callbackPath": "/api/auth/twitter/callback", "successRedirect": "/", "failureRedirect": "/登录", "consumerKey": "key", "consumerSecret": "key", "failureFlash": 是的 } }
而在客户端,我必须向每个 API 调用 url 添加 "/api/"
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>