0

我已经尝试并试图让 Open Graph 自己工作,但没有任何运气。我还尝试过其他选项,例如ajax 调用在 Chrome、Firefox 中有效,但在 IE 中无效?,但这有严重的问题。

我想要的是一个完整的解决方案,用于使用 Open Graph 检索给定指定 Facebook 个人资料 ID 的所有墙帖。它需要在不让用户登录 facebook 的情况下获取访问令牌。编辑:我有一个带有 App ID 和 App Secret 的应用程序。我不应该能够使用它来获取 Access_token 吗?我希望没有facebook 帐户的用户能够看到这个儿童页面的墙贴(这是建立一个单独网站的重点)。

对于它的价值,这是一个为患有晚期脑瘤的孩子提供的网站......这让我处于无法提出要求的位置(比如花 50 美元购买 SSL 或“只使用 facebook”) .

编辑我认为我唯一需要的是获取access_token。这不可能那么难。

4

4 回答 4

2

  • 注意: 这回答了您的问题和 peraph 有人应该至少关闭其中一个

所以我对这个问题的解决方案很简单;您仍然继续使用 AJAX 执行对 facebook 的请求,但不是直接执行。

所以你的代码看起来像这样:

        $(function() {
            $.ajax({
                url : 'ajax-handler.php',
                data : 'action=get_access_token',
                type : 'GET',
                dataType : 'json',
                success : function(json) {

                }
            });
        });

然后在ajax-handler.php文件上,您将放置检索access_token和其他信息所需的所有内容。

服务器端伪代码(我在这里使用 php)看起来像这样,但您需要使用 php sdk 以获得更好的编码......

<?php
$action = $_GET['action'];
if (isset($action)) {
    switch($action) {
        case 'get_access_token' :
            $query = array('client_id' => '####', 'client_secret' => '####', 'grant_type' => 'client_credentials');

            $access_token = file_get_contents('https://graph.facebook.com/oauth/access_token?' . http_build_query($query));

            //$access_token will be like access_token=asdas8dd98sada...
            //but we don't use it here...

            $app =   file_get_contents('https://graph.facebook.com/######');

            echo $app;
            break;
    }
}
?>

这是结果:

于 2012-04-28T01:46:24.770 回答
1

我没有交钥匙解决方案(抱歉没有足够的时间),但我可以提供一种解决跨域请求的方法:

easyXDM 是一个 Javascript 库,使您作为开发人员能够轻松解决同源策略设置的限制,从而使跨域边界的通信和公开 javascript API 变得容易。

示例: http ://easyxdm.net/wp/2010/03/17/cross-domain-ajax/

于 2012-04-29T05:54:13.880 回答
0

您的 Facebook 帐户是他帐户的朋友吗?如果是这样,您可以为自己的帐户生成自己的访问令牌,并使用https://graph.facebook.com/id-or-alias/feed使用您自己的令牌查看孩子的提要

于 2012-04-24T22:49:05.920 回答
-1

在没有有效访问令牌的情况下,只能访问 Graph 上的公共数据。可以在此处找到这些可用公共数组的列表。可以使用/me/feedAPI 调用查看用户的墙帖,但此操作特别需要访问令牌。

于 2012-04-19T22:32:20.330 回答