我有一个基于PHP的fb应用程序。一切运行正常,但我无法将故事发布到用户的Feed中。我附上一些代码以便更好地理解......
编辑:问题是我无法显示任何fbml / xfbml对话框。我可以从facebook检索信息,但fbml / xfbml只是不显示。甚至个人资料照片也没有出现。
这是我要推送Feed的index.php页面。
<?php
include 'fb_init.php';
?>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
<!--Main Stylesheet -->
<head>
<link href="style/style-index.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="JS/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="JS/fbml_init.js"></script>
</head>
<body>
<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/en_US" type="text/javascript"></script>
<script type="text/javascript">
FB.init("API_KEY", "xd_receiver.php");
</script>
<fb:profile-pic facebook-logo="true" size="square" uid="loggedinuser" ></fb:profile-pic>
这是javascript fbml_init:
$(document).ready(function() {
//<![CDATA[
var who;
FB_RequireFeatures(["Api"], function(){
FB.Facebook.init('API_KEY', 'xd_receiver.htm');
var api = FB.Facebook.apiClient; // require user to login
api.requireLogin(function(exception)
{
FB.FBDebug.logLevel=1;
FB.FBDebug.dump("Current user id is " + api.get_session().uid);
});
var who = api.get_session().uid;
var notifications;
notifications = api.notifications_get(function(){});
var fql_loggeduser_name, fql_loggeduser_status;
FB.Facebook.apiClient.fql_query("select name, status, profile_update_time from user where uid = "+who,
function(rows) {
});
FB.Connect.showPermissionDialog("offline_access");
therestofthecode(who);
});
function therestofthecode(who){
//alert("the uid is: "+who);
//FB.apiClient.
}
function facebook_prompt_permission(permission) {
FB.ensureInit(function() {
FB.Connect.showPermissionDialog(permission);
});
}
//]]>
});
上面的javascript函数只是测试各种函数的原型。我想最终只使用它来推动饲料。令人惊讶的是,javascript正在从Facebook中提取用户信息:
alt text http://img51.imageshack.us/img51/2974/screenshot20100210at112i.png
有人可以告诉我,我在这里做错了什么?
答案 0 :(得分:0)
您没有请求正确的权限。更改此代码:
FB.Connect.showPermissionDialog("offline_access");
到
FB.Connect.showPermissionDialog("publish_stream");
您也可以在此处指定第二个参数。给第二个参数一个带有如下参数的回调函数:
FB.Connect.showPermissionDialog("publish_stream", function(perms){ /* ... */ });
您可以测试用户是否接受(!perms
如果用户取消则返回true)。这样,您可以避免抛出不必要的错误。