我在我的 Nodejs 应用程序上使用官方 Dropbox API (V2)。这听起来像一个愚蠢的问题,但我真的不知道如何从回调 url 获取给定的访问令牌。实际上,它应该位于 url的哈希 (#)部分(根据他们的文档和javascript 客户端示例),服务器端不可见...
我找不到任何仅使用基本 api 的 nodejs 应用程序进行身份验证的示例。
这是我的身份验证代码:
我的快递应用:
//Entry point, DC is a DropboxConnector object
app.get('/connect/Dropbox', function(req, res) {
console.log('/connect/Dropbox called');
res.redirect(DC.getConnexionURL());
});
// Callback from the authentication
app.get('/authDropbox', function(req, res) {
console.log("/authDropbox called");
console.log(url.format(req.protocol + '://' + req.get('host') + req.originalUrl));
// The above log is: 'http://localhost:8080/authDropbox'
// Here is the problem, the access token is unreachable by express
DC.getToken(req.query.code, res);
connectorList.push(DC);
});
DropboxConnector.js,我的 dropbox api 包装器:
var REDIRECT_URI = 'http://localhost:8080/authDropbox';
//The authentication url given by the dropbox api
getConnexionURL() {
dbx = new Dropbox({ clientId: CLIENT_ID});
var authUrl = dbx.getAuthenticationUrl(REDIRECT_URI);
console.log("AuthURL: " + authUrl);
return authUrl;
}
// @param code is supposed to be the access token...
getToken(code, res) {
if (!!code) {
dbx = new Dropbox({ accessToken: code });
console.log("Authenticated!");
res.redirect(CALLBACK_URL);
} else {
console.log("No code here");
}
}
感谢帮助 !
没错,片段又名哈希的内容对服务器不可见,只有客户端(浏览器)可见。OAuth 2“令牌”流在片段上发送访问令牌,主要用于客户端应用程序,例如浏览器中的 JavaScript。对于服务器端应用程序,OAuth 2“代码”流改为将授权代码作为 URL 参数发送。
如果您有兴趣,可以在Dropbox /oauth2/authorize 文档 中找到有关这两种不同流程的更多信息。
遗憾的是,Dropbox API v2 JavaScript SDK 目前仅支持“令牌”流,但我们正在将此作为支持“代码”流的功能请求进行跟踪。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句