0

我正在使用react-google-loginReact 插件,它为我提供了一个用于 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"
}

问题是:

  1. 我应该从 GoogleLogin 组件获取 REFRESH_TOKEN 吗?也许我错过了输入一些道具......
  2. 我是否应该获得 AUTHORIZATION_CODE,然后尝试通过向https://www.googleapis.com/oauth2/v4/token发出 POST 调用来与 REFRESH_TOKEN 交换它?
4

0 回答 0