Google隐式Oauth流上的操作失败...怎么了?

时间:2019-04-24 10:53:19

标签: actions-on-google

我正在为隐式oauth流实现自己的Oauth服务器,如此处定义 https://developers.google.com/actions/identity/oauth2?oauth=implicit

似乎很简单,在检查了客户详细信息之后,我只需要重定向对吗?这是我解决问题的地方。文档说重定向网址必须如下-

  

https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID#access_token=ACCESS_TOKEN&token_type=bearer&state=STATE_STRING

注意'#'

但是,当您重定向到该URL时,这似乎使Google上的操作异常混乱,此后,我们之前使用的“登录助手”意图似乎可以正常工作,然后失败。一定是失败了,但是控制台没有显示任何错误 yes, it is going to work! but alas no!

实际上,这个问题仍然存在,而我发现删除它的唯一方法是重新创建项目。 (哦,痛苦:/)

但是,当我用“?”替换“#”时像常规查询字符串一样,重定向后,我们会收到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;

1 个答案:

答案 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...