无法将Feed推送到publish_stream

时间:2010-02-10 17:57:16

标签: php javascript facebook

我有一个基于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

有人可以告诉我,我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

您没有请求正确的权限。更改此代码:

FB.Connect.showPermissionDialog("offline_access");

FB.Connect.showPermissionDialog("publish_stream");

您也可以在此处指定第二个参数。给第二个参数一个带有如下参数的回调函数:

FB.Connect.showPermissionDialog("publish_stream", function(perms){ /* ... */ });

您可以测试用户是否接受(!perms如果用户取消则返回true)。这样,您可以避免抛出不必要的错误。