javascript - 使用 Facebook JavaScript SDK

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

这将是初学者遇到的入门问题。

我以前用 Facebook 做过编程,但不是直接作为 Web 编程 - 所以,我知道我使用 Graph API 的方式以及它的一般工作原理,但我没有任何 Web 编程经验,而且我是关于如何从 Facebook's 得到的信息有点迷茫documentation拥有一个允许我登录的工作网页(目标是尽可能简单地使用 HTML/JavaScript,但允许使用 publish_stream 权限上传图像和发布链接等在墙上)。

这是我目前为止没有完成 Facebook 告诉我要做的代码(以及我之前看到的少量 HTML 添加的少量代码):

<!DOCTYPE html>
<html>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<head>
    The title of the document (test text)
</head>
<body>
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
// init the Facebook JavaScript SDK
    FB.init({
        appId       : 'EDITED OUT FOR PRIVACY BUT IS VALID IN MY CODE',
        channelUrl  : null,
        status      : true,
        cookie      : false,
        xfbml       : false
    });

    FB.getLoginStatus(function(response) {
        if (response.status === 'connected') {
            // connected
        } else if (response.status === 'not_authorized') {
            // not authorized
            login();
        } else {
            // not_logged_in
            login();
        }
    });
};

function login() {
    FB.login(function(response) {
        if (response.authResponse) {
            // connected
            testAPI();
        } else {
            // cancelled
        }
    });
}

function testAPI() {
    console.log('Welcome!  Fetching your information... ');
    FB.api('/me', function(response) {
        console.log('Good to see you, ' + response.name + '.');
    });
}

(function(d){
    var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
    if (d.getElementById(id)) {return;}
    js = d.createElement('script'); js.id = id; js.async = true;
    js.src = "//connect.facebook.net/en_US/all.js";
    ref.parentNode.insertBefore(js, ref);
}(document));
</script>
</body>
</html>

当我将其另存为 .html 文件并将其放入 Firefox 时,没有显示任何内容(除非我在 </body> 之前输入一些 hello world 文本)。我查看了有关如何让事情运行的 JavaScript/HTML 教程,但无济于事。

我知道它在上一个链接的先决条件部分中说(我会再次链接它,但我在这里太新了,stackoverflow 不会让我)“你需要一个地方让你托管 HTML在线文件。”它还引用了 Heroku,但是我可以找到的任何资源都将我带到应用程序托管,我不明白为什么(这只是为了测试此功能)我首先需要在线托管它而不是仅仅将其放入我的浏览器(或从 C/C++ 调用 ShellExecute 以使其运行)。

[编辑:]感谢大家到目前为止的所有帮助,我只是希望到目前为止我没有花时间处理拼写错误,而不是让所有乐于助人的人找到问题的根源。

最佳答案

该页面为空白的原因是,没有打算显示任何显示 HTML。该示例的目的是演示登录和 API 调用。

如果您已经登录,那么您将看不到任何指示

FB.getLoginStatus(function(response) {
        if (response.status === 'connected') {
            // connected
                        // <----- no calls
        } else if (response.status === 'not_authorized') {
            // not authorized
            login();
        } else {
            // not_logged_in
            login();
        }
    });
};

所以如果你想知道它是否在你已经登录的情况下工作,请尝试将 testAPI() 放在这里

if (response.status === 'connected') {
    // connected
    testAPI(); // <---------------
} else if (response.status === 'not_authorized') {

关于javascript - 使用 Facebook JavaScript SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13055251/

相关文章:

facebook - 从 Facebook Messenger Chatbot api 获取用户当前位置

javascript - Bootstrap 3 弹出窗口滚动不起作用

javascript - CSS :before doesnt work perfectly in nested divs

javascript 如何删除基于 if else 的选择选项

facebook links.getStats 和带有 url 的逗号

facebook - 在 Xcode 6 中导入 FacebookSDK - swift

android - 应用程序针对 Facebook 登录配置错误 - 在 util.java 中将 ENABLE_LOG 设置为 true 后未返回 logcat

ios - Facebook iOS SDK 4.0 "App Invites"在没有 iOS 通知的情况下发送

javascript - 添加图像以响应动态链接

ios - 使用 SLRequest 将 URL 附加到 Facebook 帖子?