我正在使用react-google-login
React 插件,它为我提供了一个用于 React 的 Google oAUth 登录/登录组件。这是我的组件:
const LogIn = ({ artist_id }) => {
const responseGoogle = (response) => {
let {accessToken} = response;
console.log(response);
};
return (
<GoogleLogin
clientId="***MY CLIENT ID ***"
buttonText="Connect with Google"
accessType="offline"
prompt='consent'
scope="https://www.googleapis.com/auth/yt-analytics.readonly"
onSuccess={responseGoogle}
onFailure={responseGoogle}
/>
);
};
通过插入accessType='offline'
,prompt='consent'
我希望 GoogleLogin 与其他值一起返回 REFRESH_TOKEN 但它没有。
我还尝试插入responseType='code'
GoogleLogin 道具,在这种情况下,我希望获得一个 AUTHORIZATION CODE,该代码应该用于通过发出 POST 调用来获取 ACCESS_TOKEN 和 REFRESH_TOKEN:
(取自 Google 提供的文档:https ://developers.google.com/identity/protocols/oauth2/web-server#exchange-authorization-code )
POST /token HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded
code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7&
client_id=your_client_id&
client_secret=your_client_secret&
redirect_uri=https%3A//oauth2.example.com/code&
grant_type=authorization_code
因此,在获得 AUTHORIZATION_CODE 后,我尝试进行此 post call,但我总是收到以下错误:
{
"error": "invalid_grant",
"error_description": "Bad Request"
}
问题是:
- 我应该从 GoogleLogin 组件获取 REFRESH_TOKEN 吗?也许我错过了输入一些道具......
- 我是否应该获得 AUTHORIZATION_CODE,然后尝试通过向https://www.googleapis.com/oauth2/v4/token发出 POST 调用来与 REFRESH_TOKEN 交换它?