提供OAuth Javascript API

时间:2013-09-07 16:53:06

标签: javascript api oauth oauth-2.0 oauth-provider

我正在建立一个OAuth 2.0提供商网站,就像Facebook和Twitter一样。这两个站点都可以通过按钮“登录Facebook / Twitter”,打开一个auth对话框。用户登录后,该框将关闭,请求页面现在具有访问令牌。 他们如何以不违反跨域政策的方式执行此操作?

似乎Facebook JS SDK是从他们的服务器加载的,这是否有意绕过x-domain限制?

此外,父窗口收到的访问令牌在什么时候?是由孩子发送还是由父母提取?

由于

1 个答案:

答案 0 :(得分:1)

这是通过将子寡妇的值传递给父窗口来完成的。由父窗口打开的每个子窗口都引用了他的父窗口,可以通过以下方式访问:

var parent = window.opener.document.document; // by this you have reference to parent DOM
var someParentElement = parent.getElementById("idOfParentDomElement"); // ex: accessing particular element on parent

因此,您可以通过访问父级将值传递给父级:

var childDiv = document.getElemntById("SomeChildDiv").innerHTML;
someParentElement.innerHTML = childDiv // passing html text to parent div

详细了解此here

接收访问令牌是OAuth flow的一部分。通过oauth收到令牌并通过window.opener传递给父窗口,然后由父窗口调用window.close关闭窗口。此父级使用Access Token后。

编辑:评论后:

Facebook使用postMessage,iframe或flash功能来处理依赖于浏览器的跨域消息传递。它包括all.js,它是处理消息之间的密钥文件。您可以阅读有关其机制here

的更多信息