Hello bell / hapi开发人员和/或专家......请提前感谢您提出任何建议......我正在尝试为oauth完成强制通信战略(salesforce),而且它几乎正常运行,而且我无法找到错误的任何文档。
我收到错误" [错误:无法获取自定义访问令牌]"
我的应用程序正确地重定向到salesforce,提示在Salesforce域上登录,进行身份验证并正确返回到回调URL,但是,回调URL路由/控制器失败,因为" isAuthenticated"是假的,但我可以在请求中看到,从salesforce返回到回调的URL包含一个"代码"参数(auth访问令牌和"状态"值。)
这是我的策略
// Register bell with the server
server.register(require('bell'), function(err) {
server.auth.strategy('forcedotcom', 'bell', {
provider: {
protocol: 'oauth2',
useParamsAuth: false,
auth: config.forcedotcom.authURL,
token: config.forcedotcom.tokenURL
},
isSecure: false,
clientId: config.forcedotcom.clientID,
clientSecret: config.forcedotcom.clientSecret,
password: config.sessionCookie.sessionSecret,
location: config.forcedotcom.callbackURL
});
});

这是回调路由(在callbackURL的配置中指定
server.route({
method: ['GET', 'POST'],
path: '/auth/forcedotcom/callback',
config: {
auth: {
strategy: 'forcedotcom',
mode: 'try'
},
handler: function(request, reply) {
console.warn('request', request, 'reply', reply);
if (!request.auth.isAuthenticated) {
return reply('Authentication failed due to: ' + request.auth.error.message);
}
return reply.redirect('/');
}
}
});

任何方向都会令人惊叹。谢谢!
答案 0 :(得分:0)
我认为您需要将useParamAuth
设置为true
。 Salesforce要求client_secret
和client_id
是查询参数而不是标题。
你也可以尝试这个库https://www.npmjs.com/package/hapi-salesforce-auth-suite,其中包括signrequest auth和oauth。