Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google OAuth2 JS可以';无法获取授权码_Javascript_Reactjs_Google Authentication_Google Oauth - Fatal编程技术网

Javascript Google OAuth2 JS可以';无法获取授权码

Javascript Google OAuth2 JS可以';无法获取授权码,javascript,reactjs,google-authentication,google-oauth,Javascript,Reactjs,Google Authentication,Google Oauth,我在React中有一个自定义的Google登录按钮(遵循品牌指南),我需要在web应用程序中实现它。android应用程序已经使用BE实现了Google登录,并要求向BE发送授权码。我似乎在访问授权代码时遇到了问题(不过我可以相当容易地获得访问令牌、id和id_令牌) 我这样初始化: static googleInit (googleSignInID) { gapi.load('auth2', () => { ThirdPartyLogInApi.auth2 = g

我在React中有一个自定义的Google登录按钮(遵循品牌指南),我需要在web应用程序中实现它。android应用程序已经使用BE实现了Google登录,并要求向BE发送授权码。我似乎在访问授权代码时遇到了问题(不过我可以相当容易地获得访问令牌、id和id_令牌)

我这样初始化:

static googleInit (googleSignInID) {
    gapi.load('auth2', () => {
        ThirdPartyLogInApi.auth2 = gapi.auth2.init({
            // Retrieve the singleton for the GoogleAuth library and set up the client.
            client_id: `${googleSignInID}.apps.googleusercontent.com`,
        })
    })
}
在我的React组件中,我将一个click处理程序附加到React ref(正如我在其他stackoverflow问题中看到的那样)

在成功回调(this.onGoogleSuccess)中,我可以调用googleUser.getBasicProfile()获取用户信息,调用googleUser.getAuthResponse(true)获取id_令牌和access_令牌,但我也需要授权码

谷歌在这方面的文档让我不知所措——有人能给我指出正确的方向吗?我不想将整个身份验证流切换为使用gapi.auth2.authorize,因为我确实需要用户信息

谢谢

编辑:甚至可以访问授权码吗?谷歌似乎将这一步抽象出来,并立即返回id_标记。我只需要一些看起来像: 4/RQFWJLGD3SJQRGXURAGUZJY2YIUV4FAKVGFTRSUYUQC

componentDidMount () {
    // element, options, success, failure
    ThirdPartyLogInApi.auth2.attachClickHandler(
        this.button,
        {},
        this.onGoogleSuccess,
        this.setProcessingToFalse
    );
}