javascript - 无需登录即可阅读 Facebook 页面上的提要

标签 javascript facebook facebook-graph-api facebook-javascript-sdk

是否可以创建一个网站,并使用 JavaScript 从 Facebook 页面读取提要并将其显示给我的网站访问者,而无需他们登录,甚至不需要 Facebook。

我在 Facebook 文档中迷失了方向:(

最佳答案

感谢@mch,这里提供了使用 php 作为代理来通过 JavaScript 读取 Facebook feed 的版本。

在您的服务器上放置一个名为 proxy.php 的文件并添加以下代码:

<?php
// always add this header to ensure the JSON is output in the correct format
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");
header('Content-Type: application/json; charset=utf-8'); 

$graphUrl = $_POST[graphUrl];
if ($graphUrl == "") {
    $graphUrl = "https://graph.facebook.com/facebook/feed/";
}

//App Info, needed for Auth
$app_id = "1234567890";
$app_secret = "0000011122234334445556aaass";

//retrieve auth token
$authToken = fetchUrl("https://graph.facebook.com/oauth/access_token?type=client_cred&client_id={$app_id}&client_secret={$app_secret}");

//Echo back json to read client side.
echo fetchUrl("{$graphUrl}?{$authToken}");

function fetchUrl($url){
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 20);
    $retData = curl_exec($ch);
    curl_close($ch); 
    return $retData;
}
?>

将 app_id、app_secret 更改为您的应用 ID。在此创建应用程序 https://developers.facebook.com/apps/

在代理文件旁边创建一个 HTML 文件。添加此代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>FB reader</title>
</head>
<body>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {

            var timeout = 5000,
                load_error;

            load_error = function (jqXHR, textStatus, errorThrown) {
                if (errorThrown === "timeout") {
                    alert('Server bussy');
                } else {
                    alert('error: 404', textStatus + ": " + errorThrown);
                }
            };      

            $(document).ready(function() {
                console.log('Loading from Facebook...\n');

                //Change data: {graphUrl: 'https://graph.facebook.com/iambounty/feed'},  to what ever you want.
                $.ajax({
                    type: 'POST',
                    url: 'proxy.php',
                    data: {graphUrl: 'https://graph.facebook.com/iambounty/feed'}, 
                    timeout:  timeout,
                    error: load_error,
                    success: function (rv) {
                        var data = rv.data,
                            len = data.length,
                            i,
                            out = '';
                        for (i = 0; i < len; i += 1) {
                            if (data[i].description) {
                                out += data[i].description + '\n\n';
                            }
                        }
                        console.log(out);
                    }
                });

            });
        });
    </script>
</body>
</html>

关于javascript - 无需登录即可阅读 Facebook 页面上的提要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10427642/

相关文章:

iphone - 通过 Facebook iOS SDK 获取我的所有事件

php - Facebook 发送 api - 无法使用用户 ID 发送消息

android - 如何为 android 的 facebook sdk 3.0 配置禁用单点登录?

javascript - 使用 addEventListener 添加子元素,但事情出了问题

javascript - 尝试映射数组时出现错误。类型错误 : Cannot read property 'map' of undefined

javascript - 在转发到代理目标并将响应发送回客户端之前编辑 POST 参数

java - Facebook API 返回的日期值是否采用 GMT 格式?

javascript - 使用javascript获取元素的水平和垂直位置

facebook-graph-api - Identity Server 3 Facebook 登录 获取电子邮件

django - Fandjango Facebook 用户只返回几个 Facebook 字段