Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.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中,用户登录并同意后如何获取访问令牌和刷新令牌?_Javascript_Google Api_Google Api Python Client_Google Api Js Client - Fatal编程技术网

Javascript 在Google OAuth2中,用户登录并同意后如何获取访问令牌和刷新令牌?

Javascript 在Google OAuth2中,用户登录并同意后如何获取访问令牌和刷新令牌?,javascript,google-api,google-api-python-client,google-api-js-client,Javascript,Google Api,Google Api Python Client,Google Api Js Client,我想通过谷歌API导入一个Gmail用户的联系人 我有以下几点: 使用客户端密码和密钥获取授权url。这是用户访问以允许对我的应用程序进行权限的url 授权url重定向到应用程序设置中指定的重定向uri 我在url中有一个查询参数code,我猜这就是文档所说的授权代码 问题: 如果可能的话,我想交换此代码以通过javascript获取访问令牌和刷新令牌。但是我在javascript中看不到这部分的任何文档 在我的服务器端,我这样做是为了获得授权url: token = gdata.gauth.O

我想通过谷歌API导入一个
Gmail
用户的联系人

我有以下几点:

  • 使用
    客户端密码和密钥
    获取授权url。这是用户访问以允许对我的应用程序进行权限的url

  • 授权url重定向到应用程序设置中指定的重定向uri

  • 我在url中有一个查询参数
    code
    ,我猜这就是文档所说的授权代码

  • 问题:

    如果可能的话,我想交换此代码以通过
    javascript
    获取
    访问令牌
    刷新令牌
    。但是我在
    javascript
    中看不到这部分的任何文档

    在我的服务器端,我这样做是为了获得
    授权url

    token = gdata.gauth.OAuth2Token(client_id=settings.GMAIL_CLIENT_ID,
                                    client_secret=settings.GMAIL_API_KEY,
                                    scope=scope, user_agent=user_agent)
    
    auth_url = token.generate_authorize_url(redirect_uri=redirect_uri)
    
    然后将用户重定向到
    auth\u url
    。现在,一旦用户允许请求的权限,他们将使用查询参数
    code
    重定向回我的站点。我想从这里使用
    javascript
    来获取
    访问令牌


    另一个选项是,一旦用户被重定向到我的站点,就在服务器端获取
    访问令牌
    ,并将其与响应一起返回给他,但我真的不想这样做。

    简短回答:如果您想使用OAuth2客户端身份验证,您使用的文档是错误的

    现在是细节

    OAuth2有4种授权类型:

  • 授权代码
  • 隐式
  • 资源所有者密码凭据
  • 客户端凭据
  • 如果你想要更多的细节,你可以阅读解释

    您已经为Web服务器的
    OAuth2指定了Google文档,它适合授权代码类型。它依赖于通过SSL的Web服务器数据交换,因为它涉及到交换
    客户机\u机密

    也就是说,如果您尝试使用JavaScript执行POST请求以获取
    access\u令牌
    ,您将公开您的
    client\u secret
    ,因为它是POST调用中的必需参数

    如果要尝试请求不使用服务器端代码的
    access\u令牌
    ,则需要使用隐式授予类型


    您可以在

    中找到隐式授权类型的谷歌文档。您的问题解决了吗?我也有同样的问题。