gpt4 book ai didi

javascript - 使用 JS SDK 在 Facebook 上构建应用程序

转载 作者:行者123 更新时间:2023-11-29 16:24:57 25 4
gpt4 key购买 nike

我正在尝试在 Facebook 上构建一个简单的“应用程序”,它将根据用户是否“喜欢”我的页面来显示替代内容。

  1. 为什么下面的 JS 不起作用(不发回响应。不响应 = 不喜欢,数组 = 响应)?当我处理查询时FB 查询测试器它可以工作。
  2. 为什么会产生如下错误?

    <div id="fb-root"></div>
    <script src="http://connect.facebook.net/en_US/all.js"></script>
    <script>
    FB.init({
    appId : 'APP_ID',
    status : true, // check login status
    cookie : true, // enable cookies to allow the server to access the session
    xfbml : true, // parse XFBML
    channelUrl : 'http://domain.com/tab/', // channel.html file
    oauth : false // enable OAuth 2.0
    });

    (function($) {

    var session = FB.getSession();
    FB.api({
    method: 'fql.query',
    query: 'SELECT uid, page_id FROM page_fan WHERE uid=me() AND page_id=APP_ID'
    },
    function(response) {
    if(response instanceof Array && response.length > 0)
    alert("YOU LIKE US!");
    else
    alert("YOU DON'T LIKE US YET!");
    });
    })(jQuery);
    </script>

错误

Object { error_code="104", error_msg="Requires valid signature", request_args=[7]}

最佳答案

编辑 你不应该需要 <script src="http://connect.facebook.net/en_US/all.js"></script>除非你正在运行一个带有 Facebook 连接的应用程序(一个不会在 Facebook 上运行的应用程序。许多移动应用程序就是一个很好的例子。看看 this SO question for more information 。任何将通过选项卡或在 Facebook 页面上运行的应用程序都不会使用 Facebook 连接。

您可能想尝试使用我向您展示的 init 方法,而不是您正在使用的方法。它看起来像这样:

您的 HTML 页面

<body>
<!-- Code -->
<!-- FB Required -->
<div id="fb-root"></div>
<script type="text/javascript">iframeReady();</script>
</body>

你的 JS 文件

function iframeReady(){
//Facebook iFrame include
window.fbAsyncInit = function () {
FB.init({ appId: 'YOURAPPID', status: true, cookie: true, xfbml: true });
FB.Canvas.setAutoResize();
loginUser();
};

(function () {
var e = document.createElement('script');
e.async = true;
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
} ());
}

根据您的页面设置,您可能需要的另一件事(我应该早点注意到)是获得用户喜欢的扩展权限。

/*
* Logs in a user.
*/
function loginUser() {
FB.login(function (response) {
if (response.session) {
if (response.perms) {
//User has logged in and accepted permissions
} else {
//User did not accept permissions
}
} else {
//User did not login
}
}, { perms: "user_likes" });
}

您还可以查看 FB.getLoginStatus

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

您正在使用 FB.getSession,这 should not be used on page load .从该链接:

NOTE: You should never use this method at page load time. Generally, it is safer to use FB.getLoginStatus() if you are unsure.

获得权限后,您应该能够进行查询调用(假设它是正确的)。

如果这不能解决任何问题,请确保您所有的应用设置都是正确的(确切的 URL、应用 ID 等)

如果一切正确,则问题出在您的查询上。让我知道,我会看看是否能找到问题

关于javascript - 使用 JS SDK 在 Facebook 上构建应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7070162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com