类型错误:gapi.auth2.grantOfflineAccess 不是函数

Mor*_*len 2 javascript reactjs

我正在gapi.auth2我的 index.html 中初始化

<!DOCTYPE html>
<html lang="en">
    <head>

        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
        <meta name="google-signin-client_id" content= "817677528939-dss5sreclldv1inb26tb3tueac98d24r.apps.googleusercontent.com">

        <meta name="google-signin-scope" content="profile email">
        <script src="https://apis.google.com/js/client:platform.js?onload=start" async defer></script>
        <script>
            function start() {
                console.log('script running')
                gapi.load('auth2', function() {
                    auth2 = gapi.auth2.init({
                        client_id: '817677528939-dss5sreclldv1inb26tb3tueac98d24r.apps.googleusercontent.com',
                        scope: 'profile email'
                    });
                });
            }
        </script>

    <!-- <meta name="theme-color" content="#000000">     -->
    <!-- <link rel="manifest" href="%PUBLIC_URL%/manifest.json"> -->
    <!-- <link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico"> -->

    <title>React App</title>
  </head>
  <body>
    <div id="root"></div>


  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

然后在我的反应应用程序中:

在页面顶部: /* global gapi */

    handleSignIn() {
        console.log(gapi.auth2)
        gapi.auth2.grantOfflineAccess()
    }
Run Code Online (Sandbox Code Playgroud)

console.log是印刷:

{init: ƒ, authorize: ƒ, _gt: ƒ, enableDebugLogs: ƒ, getAuthInstance: ƒ, …}

所以它看起来像gapi.auth2一个函数,但我收到错误:

gapi.auth2.grantOfflineAccess is not a function

我究竟做错了什么?

Chr*_*tos 6

看起来您没有调用grantOfflineAccessGoogleAuth对象。要获取GoogleAuth对象,您需要getAuthInstance()像这样调用:

var ga = gapi.auth2.getAuthInstance();

ga.grantOfflineAccess(); 
Run Code Online (Sandbox Code Playgroud)

确保您只getAuthInstance()gapi.auth2.init()按照此处指定的第一次调用后调用。