如何使用Google的postmessage重定向uri方案?

时间:2017-06-17 23:22:07

标签: javascript authentication google-oauth google-signin google-oauth2

某些Google网站api exploer使用mixed scheme而非重定向到uri,其中posttessage事件由开启窗口的回调函数触发,该窗口由开启窗口接收(所以window.location.originwindow.origin不同,但我不明白如何)

我找不到有关它的文档,但也许我搜索不正确。
主要优势似乎是不需要服务器端令牌注册,因为一切都通过JavaScript发生。

Here’s <a href='javascript:window.open("https://accounts.google.com/o/oauth2/auth?client_id=292824132082.apps.googleusercontent.com&immediate=false&scope=https://www.googleapis.com/auth/userinfo.email&include_granted_scopes=false&proxy=oauth2relay604084667&redirect_uri=postmessage&origin=https://apis-explorer.appspot.com&response_type=token&gsiwebsdk=1&state=657454173|0.195379257&authuser=0&jsh=m;/_/scs/apps-static/_/js/k");'>an example script link</a> that will trigger a Domexception if not opened from https://apis-explorer.appspot.com/

此外,如果window.opener与origin参数匹配,则http://accounts.google.com/o/oauth2/auth访问window.opener.origin子元素  在url中给出并因此绕过sop (但我不明白,因为没有使用Acess-control-Allow- *标头)。否则会触发异常。

那么使用postmessage执行oauth2身份验证的JavaScript api是什么? proxy= url参数的用途是什么?

1 个答案:

答案 0 :(得分:0)

两个选项:

  1. 您可以使用Google sign-in api for javascript来请求额外的范围。请参阅reference docs

  2. 您可以使用OAuth2 for javascript