Salesforce Oauth重定向CORS问题节点快速应用程序

时间:2017-03-31 22:30:25

标签: node.js api express cors salesforce

我已经尝试了一切来解决我收到的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();
});

任何人都能真正得到这份工作和帮助吗?

1 个答案:

答案 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);
  });
});

希望,一切都很清楚,如果有任何澄清,请通知我。