当前位置: 首页 > 知识库问答 >
问题:

Google API Oauth2:连接帐户只有一个刷新令牌

松国兴
2023-03-14

我正在使用Google Oauth2 API连接到Google广告,当我的@gmail出现时,我将成为唯一一个刷新令牌。com帐户对两个不同的谷歌广告帐户具有读取权限。

我有账户a@gmail.com.此帐户具有对谷歌广告帐户的读取权限b@gmail.com和c@gmnail.com.

当我用b@gmail.com和c@gmail.com的帐户的电子邮件a@gmail.com创建两个到谷歌广告的连接时,第一个连接只收到一个刷新令牌,第二个连接没有刷新令牌。为什么啊?我如何管理这个,成为每个连接的2个刷新令牌?成为第二次连接的刷新令牌的唯一方法是转到我的帐户a@gmail.com并手动拒绝对我的应用的访问,然后再次与c@gmail.com连接。但是b@gmail.com没有刷新令牌了。

代码:

$oauth2 = new OAuth2(
            [
                'authorizationUri' => $this->container->getParameter('oauth2.google.adwords.authorizationUri'),
                'tokenCredentialUri' => $this->container->getParameter('oauth2.google.adwords.tokenCredentialUri'),
                'redirectUri' => $this->container->getParameter('domain.system') . $this->container->getParameter(
                        'oauth2.google.adwords.redirectUri.advertiser'
                    ),
                'clientId' => $this->container->getParameter('oauth2.google.adwords.clientId'),
                'clientSecret' => $this->container->getParameter('oauth2.google.adwords.clientSecret'),
                'scope' => $this->container->getParameter('oauth2.google.adwords.scope')
            ]
        );

// Create a 'state' token to prevent request forgery.
            // Store it in the session for later validation.
            $randomState = sha1(openssl_random_pseudo_bytes(1024)) . '---' . $accountId;
            $oauth2->setState($randomState);

            // Redirect the user to the authorization URL.
            $config = [
                // Set to 'offline' if you require offline access.
                'access_type' => 'offline',
                'approval_prompt' => 'force'
            ];

            // redirect to google ads
            return new RedirectResponse($oauth2->buildFullAuthorizationUri($config));

共有1个答案

黄仲渊
2023-03-14

通过阅读谷歌和许多论坛帖子的文档,我发现的唯一解决方案是,当有人想要通过一个manager帐户与两个或多个不同的谷歌广告帐户连接时,复制refresh_令牌。

我的解决方案:-通过将经理帐户的电子邮件另存为一个单独的值连接到第一个帐户-将此条目作为活动连接保存在数据库中-通过再次保存经理帐户的电子邮件连接到第二个帐户。在这种情况下,谷歌不会提供刷新令牌,因为应用程序已经通过第一次连接连接。这就是为什么我从第一个连接的条目中获取刷新令牌。这对我很管用!

如果您使用此解决方案,请不要忘记在断开连接时检查此manager帐户的可用连接。因为你可以断开所有的连接。

 类似资料:
  • 仍然存在,我可以通过它刷新访问令牌。 如果某人有G套件帐户,那么过期时间是否有特殊值,还是保持不变? 根据文档,我最多可以拥有50个令牌,那么有没有其他替代方法,这样我就可以在50个请求后获得有效的令牌。

  • 我在Alexa帐户链接授权方面遇到了一些问题。 以下是我遵循的步骤: 我从谷歌云控制台获得了凭据(客户端ID,客户端秘密...) Alexa开发人员控制台上的安装程序,使用授权代码授予作为授权授予类型 激活了我Alexa应用程序上的技能,并用我的Google帐户成功登录 现在我在请求中得到了访问令牌,在 问题是访问令牌在一小时后过期,Alexa不管理令牌的刷新。 我应该怎么做才能避免每次一小时后都

  • 我的客户正在使用IMAP使用Outlook for Web中的“连接帐户”将一个Office365电子邮件帐户连接到另一个。当这样做时,它失败了,错误是它不能连接到帐户。帐户无法通过“不安全”方法连接,手动键入IMAP设置时也无法工作。Office365电子邮件帐户在不同的Office365帐户上,但我怀疑当他们在同一个Office365帐户上时也会发生这种情况。 我把这个问题作为一个问题发布,然

  • 我的技能需要帐户链接,它将通过OAuth 2.0协议使用AWS cognito用户池对客户进行身份验证。我可以在用户池中指定刷新令牌的TTL,我决定将其有效期设置为60天。 据我所知,alexa将访问令牌与您的技能收到的每个请求一起发送给您,以便您能够识别使用该技能的客户。如果他们的访问令牌过期,alexa将通过在将带有访问令牌的请求转发给您之前刷新他们的令牌来处理此问题。因此,您可以拥有有效的访

  • 问题内容: 我有使用socket.io(1.5)的这个简单的node.js Servercode: 如果我运行此代码并按几次F5键,则在某些情况下会在断开旧连接之前创建新的连接。一段时间后,我认为它的心跳超时,所有连接都将关闭。查看结果: 我的问题是:这是Bug还是socket.io的正常行为?只需按F5键,如何防止连接泛滥? 最好的问候马克 问题答案: 我制作了自己的测试应用程序,能够弄清楚发生

  • 我正在尝试使用Azure帐户扩展在VSCode中进行身份验证,如下所述:https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/identity/identity/README.md#authenticating-通过visual studio代码 然后使用DefaultAzureCredential,如下所述:https://githu