如何使用桌面应用程序中的javascript SDK

时间:2011-09-19 13:39:40

标签: javascript facebook authentication oauth desktop

我正在编写一个桌面应用程序,通过使用从本地文件运行HTML \ javascript的嵌入式浏览器与facebook进行交互。

我能够使用登录对话框来检索令牌(使用桌面应用程序的facebook documentation中描述的方法),但我仍然无法调用基本的SDK函数,例如 FB。 init() FB.getLoginStatus()

执行 FB.init()

    FB.init({
        appId: '120260327220',
        status: true, // check login status
        oauth: true // enable OAuth 2.0
    });

我得到HTTP响应(通过HTTP嗅探器):

<span>Given URL is not allowed by the Application configuration.: One or more of the given URLs is not allowed by the Application configuration. It must match one of the Connect or Canvas URLs or domain must be the same as or a subdomain of one of the Application&#039;s base domains.</span>

执行 FB.getLoginStatus()

        FB.getLoginStatus(function (response) {
            if (response.authResponse) {
                alert("logged in and connected user, someone you know");
            } else {
                alert("no user session available, someone you dont know");
            }
        });

我一无所获!

该应用程序完全基于客户端,这意味着我没有服务器端,因此没有用于注册facebook应用程序的URL。在IE上运行。

有谁知道我是否以及如何使用本地javascript文件(用于桌面应用程序)的facebook javascript SDK?

编辑:将应用程序URL配置为http://localhost不是有效选项,因为最终此脚本应该能够在任何计算机上运行,​​无论是否配置了localhost。 / p>

感谢。

5 个答案:

答案 0 :(得分:1)

正如您所提到的,您的桌面应用程序中有一个嵌入式浏览器,因此在这种情况下,您可以通过网络托管具有Facebook相关功能的应用程序页面,并在嵌入式浏览器中提取同一页面的URL。这样,您就可以在应用程序的设置中提供有效的域,而不是localhost。此外,您可以从您的页面对facebook API进行有效调用,然后您的桌面应用程序可以使用所有这些与Facebook相关的数据,因为它们被拖到您的嵌入式浏览器上。

简而言之,您的桌面应用程序将非常像Facebook的画布,其中应用程序的页面被拉出并显示在画布内。但是在您的情况下,您将完全控制页面的显示方式,时间,地点和位置,而且正确粘贴和结构良好的UI将使外部页面和桌面应用程序融合在一起,用户永远不会来知道区别。

答案 1 :(得分:1)

由于我在这里得不到可接受的答案,我的实现以及我在做什么::

由于跨域ajax问题,无法在本地页面上使用Facebook SDK。

解决这个问题的方法是使用JSONP ajax调用Facebook的图形API(JSONP允许跨域)。
登录过程通过导航(在新窗口中)到登录页面完成,使用特定的URL参数来设置页面的属性。

答案 2 :(得分:1)

相关:

  

JS SDK旨在用于网站(根据服务定义,可通过http或https访问),我们不打算支持使用file:或任何其他协议。   这与一般的插件一致,其中http / https URI可用作标识符(开放图形等),但file:// URI不是。

     

您可以尝试在Web可访问文档中初始化SDK,包括使用iframe - 请注意,您必须添加逻辑以确保正确调整大小。

作为Facebook bug report的答案。

答案 3 :(得分:0)

如果您使用的是PhoneGap 1.0和Xcode 4,请按照以下说明操作:http://www.pushittolive.com/post/1239874936/facebook-login-on-iphone-phonegap

我的安装如下:http://cl.ly/AHQ1

请务必将ChildBrowser.js文件移出plugins文件夹并移至www文件夹的根目录。还要确保链接到index.html文件中的ChildBrowser.js。

然后按照以下3个步骤http://collingo.com/2011/08/18/installing-childbrowser-ios-phonegap-plugin-in-xcode-4/

进行操作

最后,按照以下帖子中提到的更新您的PhoneGap.plist文件:http://wiki.phonegap.com/w/page/43708792/How%20to%20Install%20a%20PhoneGap%20Plugin%20for%20iOS,我的看起来像:http://cl.ly/AHAH

答案 4 :(得分:0)

您在应用程序的开发者页面上设置的应用程序URL是什么?我只是根据FB.init()错误消息猜测你需要将URL设置为“http:// localhost / start page name”。在调试我们的应用程序时,我们在本地运行它,并以这种方式设置应用程序的URL。