作为参考,以下是我正在使用的Google+信息流:
https://developers.google.com/+/web/signin/server-side-flow
- 用户单击登录按钮.授权请求将发送到Google的OAuth服务器
- 为用户触发OAuth对话框
- 返回access_token,id_token和一次性代码
- 客户端将id_token和代码发送到服务器
- 服务器为access_token交换一次性代码
- Google返回access_token
- 服务器应确认"完全登录"到客户端
我已经有了这个大部分工作,但我希望AngularJS知道客户端在步骤7"完全登录"的时间.
理想情况下,我希望第3步由AngularJS控制器处理,但我不确定这是否可行.
登录按钮位于:
<!-- Add where you want your sign-in button to render -->
<div id="signinButton">
<span class="g-signin"
data-scope="https://www.googleapis.com/auth/plus.login"
data-clientid="YOUR_CLIENT_ID"
data-redirecturi="postmessage"
data-accesstype="offline"
data-cookiepolicy="single_host_origin"
data-callback="signInCallback">
</span>
</div>
<div id="result"></div>
Run Code Online (Sandbox Code Playgroud)
data-callback参数允许我指定一个函数,但我只能让它来处理全局函数.
我能想到的唯一解决方法是让AngularJS不断轮询服务器以获取更新,以防万一用户登录,但我想知道是否有办法在事件结构中使这项工作成为现在.
无论这是否可能,我将非常感谢任何关于我应该怎么做的建议.请让我知道,如果你有任何问题.谢谢!
我有一个MongoDB集合[Users],每个集合都有一个嵌入文档数组[照片].我希望能够有一个页面列出最近的照片,例如 - 任何用户上传的最近10张照片.
用户
[
{
_id: ObjectID
name: "Matthew"
Photos: [
{
_id: ObjectID
url: "http://www.example.com/photo1.jpg"
created: Date("2013-02-01")
},
{
_id: ObjectID
url: "http://www.example.com/photo3.jpg"
created: Date("2013-02-03")
}
]
},
{
_id: ObjectID
name: "Bob"
Photos: [
{
_id: ObjectID
url: "http://www.example.com/photo2.jpg"
created: Date("2013-02-02")
},
{
_id: ObjectID
url: "http://www.example.com/photo4.jpg"
created: Date("2013-02-04")
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
我解决此问题的第一个尝试是找到所有照片不为空的用户,并按创建日期对其进行排序:
User.find({images:{$ne:[]}}).sort({"images.created":-1})
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用,因为我需要它.它按最新图像对用户进行排序,但仍返回所有图像,并且无法限制该功能返回的图像数量.
我开始研究聚合,看起来它可能是我正在寻找的解决方案,但我很难找到如何让它工作.
理想情况下,我想要返回的结果类型如下:
results: [
{
_id: ObjectID (from Photo)
name: "Bob"
url: "http://www.example.com/photo4.jpg"
created: Date("2013-02-04")
}
{
_id: ObjectID (from Photo) …
Run Code Online (Sandbox Code Playgroud) 我正在学习建立Chrome扩展,而我试图按照官方指南中的指令之一在这里.
我想要完成的是:
到现在为止还挺好!我使用以下脚本注入页面.
var injectJS = function(url, cb) {
var h = document.getElementsByTagName('head')[0],
s = document.createElement('script');
s.type = 'text/javascript';
s.src = url;
if (cb)
s.onload = cb;
h.appendChild(s);
};
injectJS(chrome.extension.getURL('script/do_something.js'));
Run Code Online (Sandbox Code Playgroud)
现在,我希望注入的脚本能够与扩展进行通信.
看起来我正在寻找的是文档中描述的内容.
https://developer.chrome.com/extensions/content_scripts.html#host-page-communication
问题是,当我尝试执行window.postMessage
控制台时显示错误"DOM Exception 12".
编辑:解决了运行示例代码的第一个问题.
我得到的另一个错误,来自smae代码来自port.postMessage
:
Uncaught Error: Attempting to use a disconnected port object
这是代码:
var port = chrome.runtime.connect();
// Respond to messages from the injected script to collect results
window.addEventListener('message', function(e) {
if (e.source != window)
return; …
Run Code Online (Sandbox Code Playgroud) javascript ×2
angularjs ×1
google-api ×1
google-oauth ×1
mongodb ×1
mongohq ×1
mongoose ×1
node.js ×1
oauth-2.0 ×1