使用JS SDK在Facebook上构建应用程序
Building an app on Facebook using JS SDK
我试图在Facebook上建立一个简单的"应用程序",将根据用户是否"喜欢"我的页面显示替代内容。
- 为什么下面的JS不工作(不发送响应)。没有Response = no like, array = Response)?当我处理查询时FB查询测试仪它工作。
-
为什么会产生以下错误?
<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]}
EDIT你不应该需要<script src="http://connect.facebook.net/en_US/all.js"></script>
,除非你正在运行一个带有Facebook connect的应用程序(一个不会在Facebook上运行的应用程序)。许多移动应用程序就是一个很好的例子。更多信息请看这个SO问题。任何通过标签页或Facebook页面运行的应用程序都不使用Facebook connect。
你可能想尝试使用我向你展示的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,它不应该在页面加载时使用。从该链接:
注意:永远不要在页面加载时使用此方法。一般来说,如果你不确定,使用FB.getLoginStatus()会更安全。
一旦你有了权限,你应该能够进行查询调用(假设它是正确的)。
如果这不能解决任何问题,那么请确保所有应用程序设置都是正确的(确切的URL,应用程序Id等)
如果这都是正确的,那么问题是与您的查询。告诉我,我看看能不能找到问题
你必须在fql
的每个请求中包含你的access_token
,这之前不是命令,但现在是。
Facebook是这么说的:
GET /fql?q=SELECT+uid2+FROM+friend+WHERE+uid1=me()&access_token=...
在API请求中添加access_token。
FB.api({
method: 'fql.query',
access_token : [YOUR TOKEN],
query: 'SELECT uid, page_id FROM page_fan WHERE uid=me() AND page_id=APP_ID'
},
相关文章:
- 如何在构建node-webkit应用程序后获取外部资源
- 如何为生产构建angular2应用程序
- Grunt构建导致Angular应用程序在dist上崩溃
- 角度新手:开始构建应用程序
- 为ios构建应用程序(反应原生)
- Phonegap函数未在Phonegap构建应用程序中定义 - 推送通知也不起作用
- 使用jQuery构建应用程序
- 使用CoreOS和多个Docker容器构建应用程序的正确方法
- 在构建应用程序Javascript MVC的过程中,score/buildjs抛出了一个没有解释的错误
- Android Kit Kat上的按钮点击只有在多次点击phonegap构建应用程序后才会激活
- 如何使一个phonegap构建应用程序在后台工作
- 使用JS SDK在Facebook上构建应用程序
- 使用Backbone.js和Express.js构建应用程序
- 在ubuntu 16.04上使用Apache Cordova构建应用程序失败
- 单选按钮返回"on"值在PhoneGap构建应用程序
- 如何在Android的Phonegap构建应用程序中关闭子浏览器
- 从.metreor目录中的构建应用程序还原metrojs源代码
- 如何在不显示API密钥的情况下使此代码正常工作?我正在Node.js/Angular/Express上构建应用程序
- 流星0.8.0:在构建应用程序时:意外的关闭模板标记
- 在build.phonegap. js中构建应用程序时,包含名为phonegap.js或coredova.js的文件