你如何在 React 和 Express 之间使用 Oauth 回调?
How do you use an Oauth callback between React and Express?
我正在尝试将 MailChimp 的 API 集成到我的 React 应用程序中,这将允许用户授权他们的 MailChimp 帐户在我的应用程序中使用。我还没有找到关于它的教程,所以我正在关注这个只使用 express 的教程:https://www.codementor.io/mattgoldspink/integrate-mailchimp-with-nodejs-app-du10854xp
我已经通过 Mailchimp 设置了我的 app/my 客户端 secret/client id 等:
重定向 URI
```http://127.0.0.1:3001/mailchimp/auth/callback````
我保留了与教程相同的 express 代码,除了我将客户端密码放在 .env 文件中:
server.js
const querystring = require('querystring');
const mailchimpClientId = `${process.env.MC_CLIENT}`
app.get('/mailchimp/auth/authorize', function (req, res) {
res.redirect('https://login.mailchimp.com/oauth2/authorize?' +
querystring.stringify({
'response_type': 'code',
'client_id': mailchimpClientId,
'redirect_uri': 'http://127.0.0.1:3000/mailchimp/auth/callback'
}));
});
然而,在教程中,回调函数在一个 HTML 文件中,这样写:
<!doctype html>
<html>
<head>
<title>Integrate MailChimp</title>
</head>
<body>
<a class="btn btn-primary" href="/mailchimp/auth/authorize">Connect with MailChimp</a>
</body>
</html>
我添加了这个(使用 JSX 语法):
MailChimp.jsx
class MailChimp extends Component {
render() {
return (
<div>
<h1>MailChimp Auth</h1>
<a href={'http://127.0.0.1:3000/mailchimp/auth/authorize'}>Mailchimp</a>
</div >
)
}
}
export default withRouter(MailChimp);
在我的 React 应用程序的路由 localhost:3001/mailchimp
中单击 link 后,我被发送到 mailchimp,在那里我使用我的帐户(不是请求权限的帐户)成功登录,然后我返回到反应应用
但是,我收到以下错误:
GET /mailchimp/auth/callback 404 2.818 ms - 162
Failed to load resource: the server responded with a status of 404 (Not Found)
我在网上搜索过,试图找到一个使用 React & Express for MailChimp Oauth 进行应用程序授权的工作示例,但我还没有找到。我的问题是,我是否在重定向中设置了错误,或者是否有更好的建议在 React 中处理此请求?
404 错误表示您没有映射到 /mailchimp/auth/callback
的路线。从你的代码看来你没有写那个。
除非您没有提供代码,否则您需要教程中代码中提到的路由处理程序:
app.get('/mailchimp/auth/callback', function(req, res) {
request.post('https://login.mailchimp.com/oauth2/token')
.send(querystring.stringify({
...
}
我正在尝试将 MailChimp 的 API 集成到我的 React 应用程序中,这将允许用户授权他们的 MailChimp 帐户在我的应用程序中使用。我还没有找到关于它的教程,所以我正在关注这个只使用 express 的教程:https://www.codementor.io/mattgoldspink/integrate-mailchimp-with-nodejs-app-du10854xp
我已经通过 Mailchimp 设置了我的 app/my 客户端 secret/client id 等:
重定向 URI
```http://127.0.0.1:3001/mailchimp/auth/callback````
我保留了与教程相同的 express 代码,除了我将客户端密码放在 .env 文件中:
server.js
const querystring = require('querystring');
const mailchimpClientId = `${process.env.MC_CLIENT}`
app.get('/mailchimp/auth/authorize', function (req, res) {
res.redirect('https://login.mailchimp.com/oauth2/authorize?' +
querystring.stringify({
'response_type': 'code',
'client_id': mailchimpClientId,
'redirect_uri': 'http://127.0.0.1:3000/mailchimp/auth/callback'
}));
});
然而,在教程中,回调函数在一个 HTML 文件中,这样写:
<!doctype html>
<html>
<head>
<title>Integrate MailChimp</title>
</head>
<body>
<a class="btn btn-primary" href="/mailchimp/auth/authorize">Connect with MailChimp</a>
</body>
</html>
我添加了这个(使用 JSX 语法):
MailChimp.jsx
class MailChimp extends Component {
render() {
return (
<div>
<h1>MailChimp Auth</h1>
<a href={'http://127.0.0.1:3000/mailchimp/auth/authorize'}>Mailchimp</a>
</div >
)
}
}
export default withRouter(MailChimp);
在我的 React 应用程序的路由 localhost:3001/mailchimp
中单击 link 后,我被发送到 mailchimp,在那里我使用我的帐户(不是请求权限的帐户)成功登录,然后我返回到反应应用
但是,我收到以下错误:
GET /mailchimp/auth/callback 404 2.818 ms - 162
Failed to load resource: the server responded with a status of 404 (Not Found)
我在网上搜索过,试图找到一个使用 React & Express for MailChimp Oauth 进行应用程序授权的工作示例,但我还没有找到。我的问题是,我是否在重定向中设置了错误,或者是否有更好的建议在 React 中处理此请求?
404 错误表示您没有映射到 /mailchimp/auth/callback
的路线。从你的代码看来你没有写那个。
除非您没有提供代码,否则您需要教程中代码中提到的路由处理程序:
app.get('/mailchimp/auth/callback', function(req, res) {
request.post('https://login.mailchimp.com/oauth2/token')
.send(querystring.stringify({
...
}