我正在为隐式oauth流实现自己的Oauth服务器,如此处定义 https://developers.google.com/actions/identity/oauth2?oauth=implicit
似乎很简单,在检查了客户详细信息之后,我只需要重定向对吗?这是我解决问题的地方。文档说重定向网址必须如下-
注意'#'。
但是,当您重定向到该URL时,这似乎使Google上的操作异常混乱,此后,我们之前使用的“登录助手”意图似乎可以正常工作,然后失败。一定是失败了,但是控制台没有显示任何错误
实际上,这个问题仍然存在,而我发现删除它的唯一方法是重新创建项目。 (哦,痛苦:/)
但是,当我用“?”替换“#”时像常规查询字符串一样,重定向后,我们会收到400错误-
必须在查询字符串中设置参数“ code”或“ error”。
我不确定我在做什么错。作为参考,这是构造重定向URL的JS-
//bearerToken already generated at this point in the code
var redirectUri = params.get("redirect_uri");
var state = params.get("state");
var redirectString = redirectUri;
redirectString+="#access_token="+bearerToken;
redirectString+="&token_type=bearer";
redirectString+="&state="+state;
window.location.href=redirectString;
答案 0 :(得分:0)
我所做的唯一与您不同的是,最终使它起作用的是使用window.location.replace
而不是window.location.href
。
据我所知,window.location.replace
是模拟HTTP重定向的客户端方法。
我的网址看起来像这样https://oauth-redirect.googleusercontent.com/r/project-id#access_token=4cc355t0k3n&token_type=bearer&state=AB8b_TOEy...