在chrome.identity中重定向无法正常工作

3
我一直在开发一个Chrome应用程序,使用chrome.identity.launchWebAuthFlowAPI对用户进行谷歌账户身份验证。
设置如下:
1. 在应用程序中点击登录按钮会执行以下代码: chrome.identity.launchWebAuthFlow({'url': <AUTH-URL>, 'interactive': true}, function(redirect_url) { <handle URL here> } }); <AUTH-URL>指向我的服务器上的一个端点,该端点重定向到https://accounts.google.com/o/oauth2/auth?response_type=code&redirect_uri=http://<APP-ID>.chromiumapp.org/...&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email&access_type=offline&approval_prompt=force 这个流程到昨天正常工作。点击按钮会打开chrome标识窗口,显示Google登录页面,输入用户名和密码后将调用回调函数。
但今天它不再工作了。只要我点击登录按钮,就会看到“无法加载授权页面”的信息。
我尝试在服务器上设置5秒延迟(在重定向之前),但是“无法加载授权页面”的消息出现在5秒钟之前。
有任何想法可能发生了什么?

请问您能提供redirect_url的值吗? - Dayton Wang
嗨@Osiris,有没有找出为什么会发生这种情况的运气?我使用chrome.identity.getAuthToken也遇到了同样的问题,没有任何更改就无法工作了。同样的错误信息... - brian
@Brian,请查看答案。如果出现任何错误,Chrome API都会返回“无法加载授权页面”的通用消息,因此我不确定该答案是否适用于您。 - Osiris
1个回答

0

经过两天的登录流程不起作用,我们终于找到了解决方法。被呈现的页面(<AUTH-URL>)包含一个 Google Tag Manager 代码片段。

我们最近更新了该片段以包含 MixPanel。这导致在页面中注入了一些带有 async 属性的 <script> 元素。从 GTM 中移除 Mixpanel 立即解决了问题。

我猜是移除了 <script async ...> 才起了作用。问题不仅仅出现在 OAuth 流程中 - 简单的 <a> 链接也无法正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接