2010-02-10 4 views
0

J'ai une application fb basée sur php. Tout fonctionne correctement, mais je ne parviens pas à publier des articles dans le flux de l'utilisateur. Je joins un peu de code pour une meilleure compréhension ...impossible de pousser le flux dans publish_stream

EDIT: Le problème est que je suis incapable d'afficher une boîte de dialogue fbml/xfbml. Je peux récupérer des informations sur facebook mais le fichier fbml/xfbml ne s'affiche pas. Même la photo de profil ne s'affiche pas.

Ceci est la page index.php d'où je veux pousser le flux.

<?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> 

c'est le 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); 
     }); 
     } 

    //]]> 
}); 

ci-dessus la fonction javascript est juste un prototype pour tester différentes fonctions. Je veux finalement l'utiliser uniquement pour pousser le flux. Étonnamment, le javascript tire les informations utilisateur de facebook très bien:

alt text http://img51.imageshack.us/img51/2974/screenshot20100210at112i.png

quelqu'un peut me dire qu'est-ce que je fais mal ici?

Répondre

0

Vous ne demandez pas la bonne autorisation. Modifier ce code:

FB.Connect.showPermissionDialog("offline_access"); 

à

FB.Connect.showPermissionDialog("publish_stream"); 

Vous pouvez également spécifier un second paramètre ici. Donnez le second paramètre une fonction de rappel avec un argument comme celui-ci:

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

et vous pouvez tester pour voir si l'utilisateur accepte ou non (!perms retourne vrai si l'utilisateur a annulé). De cette façon, vous pouvez éviter de lancer des erreurs inutiles.

+0

ce n'est pas le cas de la boîte de dialogue d'autorisation à afficher. la chose est que je suis incapable de même afficher le dialogue. N'importe quel dialogue. – amit

Questions connexes