Node-Webkit与Facebook集成

4
我正在使用node-webkit构建一个类似于新闻阅读器的桌面应用程序。

https://github.com/rogerwang/node-webkit

这个应用程序基本上是服务器和客户端同时存在。我在facebook API中遇到的问题是:我希望我的应用程序用户登录并展示他们当前的墙贴文和类似的内容。此外,我还有一些来自其他来源的新闻项目,这些项目应该可以被此用户点赞/分享。

整个应用程序是一个单页JS(更确切地说是coffeescript)应用程序,具有多个组件,不可能进行硬重定向。

API中显示的每种登录方式似乎都不适合我的应用程序类型。连接到Facebook的最佳方法是什么,既没有硬重定向,也没有自己的URI可供重定向?


客户端SDK可以在不刷新页面的情况下登录并获取授权令牌。 - josh3736
使用教程页面上的未修改代码:无法加载资源文件://connect.facebook.net/en_US/all.js ... 跨域问题?我只是删除了通道属性(没有URI),并设置了我的正确AppID。 - Maximilian Stroh
1
你需要使用绝对URL而不是文档中的协议相对URL。将 js.src = "//connect.facebook.net/... 修改为 https://connect.facebook.net/... - josh3736
好的,完成了。现在是跨域问题:“一个或多个给定的URL不被应用程序的设置所允许。它必须匹配网站URL或画布URL,或者该域必须是应用程序域的子域。” - Maximilian Stroh
似乎我的客户端SDK问题是:我无法在Facebook应用程序设置中注册URL,并且显然Facebook会检查请求的客户端是否与此URL匹配。是否有类似于“ANY”的东西,我可以在那里写任意URL? - Maximilian Stroh
没有,登录必须与现有域名相关联。 - CBroe
1个回答

3
如果你正在开发一个独立的客户端应用程序,而不是网站,我不建议尝试使用Facebook的Javascript API,因为它假设它在某个网站上运行。你可能会在非官方Node.js API中有更多的运气,因为node-webkit允许你从DOM内部调用任何Node.js库。如果仍然没有成功,请尝试让用户登录Facebook本身,在<iframe>中呈现其登录页面。然后,您可以通过AJAX或通过Node.js HTTP API进行HTTP调用,直接调用Facebook的内部API。

我的主要问题是如何获取纯净的访问令牌。然而,我找到了一个解决方案,使用一个子窗口。+1 是因为你引导我远离他们的客户端 SDK,另外 +1 是因为你指向了 Node.js 库以供进一步使用。如果没有人提供另一个天才的解决方案,你将获得赏金 :) - Maximilian Stroh
@Hisako 我也遇到了同样的问题。我想在一个node webkit应用程序中集成Facebook连接。我只想检索访问令牌。你是如何做到的?我遇到了同样的错误:“给定的URL之一或多个不被应用程序设置允许。它必须与网站URL或画布URL匹配,或者域必须是应用程序域之一的子域。”你提到了子窗口。你是什么意思?非常感谢! - mathieurip
2
我在我的应用程序中打开了OAuth URL,并在新的子窗口中“观察”了该URL。一旦用户登录,URL将更改为在“#”符号后附加访问令牌的内容。 - Maximilian Stroh
@Hisako 我也在尝试做同样的事情,但是我无法“监视”URL。当子窗口被重定向到Facebook授权页面后,所有附加到子窗口的事件监听器都停止工作了。你能帮我解决这个问题吗? - naike
1
不使用事件监听器。只需触发一个setInterval并每50毫秒检查一次URL。有点不规范,但对我有效。 :) - Maximilian Stroh
1
@Hisako,我试过了,确认它可以正常工作。现在我可以获取令牌了。谢谢 :)。 - naike

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接