我已经尝试了一切来解决我收到的CORS错误。对于oauth流,将应用程序重定向到Salesforce登录屏幕(但此url会自动从salesforce重定向到salesforce)
XMLHttpRequest无法加载salesforce url 2从salesforce重定向 url 1 to 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();
});
任何人都能真正得到这份工作和帮助吗?
答案 0 :(得分:0)
我几天前写了一篇博客:http://nodexperts.com/blog/salesforce-oauth-using-nodejs/
首先,这将有助于您在Node-Express应用程序中设置OAuth2和SalesForce。
另一件事是你可以从你的应用程序 - > SalesForce登录应用程序 - > your_redirect_uri。
当您从服务器到服务器执行此操作时,您只会收到CORS错误。
因此,如果您的应用程序具有一些UI和一些用户交互,那么我建议您从客户端代码重定向到SalesForce页面。
以下是如何使用 express roure和 jsforce npom包重定向到Salesforce登录页面的片段:
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连接应用的方法,重定向网址:
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);
});
});
希望,一切都很清楚,如果有任何澄清,请通知我。