Salesforce Oauth 重定向 CORS 问题节点快速应用程序
Posted
技术标签:
【中文标题】Salesforce Oauth 重定向 CORS 问题节点快速应用程序【英文标题】:Salesforce Oauth redirect CORS issue node express app 【发布时间】:2017-08-26 07:26:42 【问题描述】:我已尽一切努力解决收到的 CORS 错误。对于 oauth 流程,将您的应用程序重定向到 Salesforce 登录屏幕(但此 url 会在后台自动从 salesforce 重定向到 salesforce)
XMLHttpRequest 无法加载 salesforce url 2 从 salesforce 重定向 url 1 到 salesforce oauth url 2 已被 CORS 策略阻止:否 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://localhost:3000” 访问。
我已经安装了 CORS 模块,也试过这个:
app.use('/public',function(req, res, next)
res.setHeader("Access-Control-Allow-Origin", "*");
// Request headers you wish to allow
res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-
With, Content-Type, Accept");
// Set to true if you need the website to include cookies in the
requests sent
res.setHeader('Access-Control-Allow-Credentials', true);
// Pass to next layer of middleware
next();
);
任何人都可以真正得到这个工作和帮助吗?
【问题讨论】:
错误消息表明它是一个 Salesforce URL,它没有在其响应中发送 Access-Control-Allow-Origin。在你自己的 express 应用中启用 CORS 并不能解决这个问题。所以你需要弄清楚是否有一些 Salesforce 文档解释了支持的方式来做你想做的任何事情,或者使用来自 github.com/Rob--W/cors-anywhere 或其他地方的代码设置 CORS 代理 您不能通过 XMLHttpRequests 进行 OAuth。 【参考方案1】:几天前我刚刚写了一篇博客:http://nodexperts.com/blog/salesforce-oauth-using-nodejs/
首先,这将极大地帮助您在 Node-Express 应用中设置 OAuth2 和 SalesForce。
另一件事是您可以从您的应用程序 -> SalesForce 登录应用程序 -> your_redirect_uri。
只有在服务器到服务器之间执行此操作时才会出现 CORS 错误。
因此,如果您的应用具有一些 UI 和一些用户交互,那么我建议您从您的客户端代码重定向到 SalesForce 页面。
这是一个关于如何使用 express roure 和 jsforce npom 包重定向到 Salesforce 登录页面的 sn-p:
app.get('/oauth2/auth', function(req, res)
const oauth2 = new jsforce.OAuth2(
clientId: process.env.CLIENT_ID,
clientSecret: process.env.CLIENT_SECRET_ID,
redirectUri: `$req.protocol://$req.get('host')/$process.env.REDIRECT_URI`
);
res.redirect(oauth2.getAuthorizationUrl());
);
这就是你如何设置你的 SalesForce 连接的应用程序,重定向 url:
app.get('/redirect_uri', function(req,res)
const oauth2 = new jsforce.OAuth2(
clientId: process.env.CLIENT_ID,
clientSecret: process.env.CLIENT_SECRET_ID,
redirectUri: `$req.protocol://$req.get('host')/$process.env.REDIRECT_URI`
);
const conn = new jsforce.Connection( oauth2 : oauth2 );
conn.authorize(req.query.code, function(err, userInfo)
if (err)
return console.error(err);
console.log(conn.accessToken);
);
);
希望,一切都清楚了,如果有任何澄清,请告诉我。
【讨论】:
如果我不想将用户重定向到 auth salesforce 网页怎么办。我只想登录并获取访问令牌在 jsforce 中可行还是我必须实现 SF REST api?以上是关于Salesforce Oauth 重定向 CORS 问题节点快速应用程序的主要内容,如果未能解决你的问题,请参考以下文章