2009-11-24 6 views
0

Mon site permet aux utilisateurs de se connecter via Facebook Connect et leur permet également de mettre à jour un champ de statut de notre site. Je souhaite inclure une case à cocher sous le champ de mise à jour du statut qui leur permettra de publier cette mise à jour sur leur profil Facebook s'ils le souhaitent. Pour ce faire, j'ai besoin que l'utilisateur accorde à notre application des permissions pour publier sur son profil Facebook ce qui est supporté en demandant à l'utilisateur l'autorisation 'publish_stream' en utilisant la fonction JS FB.Connect.showPermissionDialog http://developers.facebook.com/docs/?u=facebook.jslib.FB.Connect.showPermissionDialog.Facebook Connect Publier Stream Aide JS

Le problème que j'ai est de savoir si je dois inviter l'utilisateur à le faire. Fondamentalement, l'expérience utilisateur que je voudrais avoir est que lorsque l'utilisateur coche cette case pour la première fois, je veux qu'ils soient invités à accorder cette autorisation. Une fois que cela a été accordé, je n'aurai pas besoin de les inviter à l'avenir s'ils cochent encore cette case. Je n'arrive pas à comprendre ce que JS à inclure dans l'action onclick de cette case à cocher qui va vérifier pour voir si l'utilisateur a accordé cette permission et sinon les inviter, sinon ne rien faire. Aussi après avoir coché la case et avoir accordé la permission je ne veux rien faire (pas de rechargement de page) mais si elles rejettent la demande d'autorisation, j'aimerais que la case à cocher soit décochée. Je pense que je devrais utiliser la fonction FB.ApiClient.users_hasAppPermission JS http://developers.facebook.com/docs/?u=facebook.jslib.FB.ApiClient.users_hasAppPermission mais je suis encore confus sur ce que cela ressemblerait. Le code psuedo pour ce serait:

onclick=" 
    if(user_already_granted_permission) { do_nothing; } 
    else { 
     prompt_user_to_grant_permission { 
      wait_for_response_from_permission_dialog { 
       if(permission_granted) { do_nothing; } 
       else { uncheck_checkbox; } 
      } 
     } 
    } 
" 

Une autre chose à noter est que je l'ai déjà vérifié l'utilisateur est connecté via Facebook Connect lorsque la page a été rendu. J'espère que quelqu'un d'autre utilisant Facebook Connect a déjà été en mesure de comprendre celui-ci. Merci d'avance pour votre aide!

Répondre

1

développé récemment une online demo qui utilise Facebook Connect et obtient la liste d'amis d'un utilisateur donné - ce n'est pas la même chose que votre cas, mais j'utilisé FB.Facebook.apiClient.requireLogin pour obtenir l'utilisateur connecté, comme ceci:

var api_key = 'd04fba62ff27c6c84a6b767d404bcec3'; 
var channel_path = '/xd_receiver.htm'; 

/* initialize facebook API */ 
FB_RequireFeatures(['Api'], function() { 
    FB.Facebook.init(api_key, channel_path); 

    var api = FB.Facebook.apiClient; 

    api.requireLogin(function(exception){ 
     // user is logged in and my application 
     // has permissions to get friend list 
    }); 
}); 
+0

@Alexander - Merci, mais la partie connectée n'est pas le gros problème que je rencontre. Avez-vous réalisé un développement dans lequel vous avez invité les utilisateurs à publier sur leur flux d'actualités? Si c'est le cas, cela serait plus applicable. –

+0

Désolé, je suppose que je n'ai pas bien compris la question. Je n'ai pas utilisé les permissions api, pourtant je suppose que le post suivant dans les forums de développeurs facebook devrait vous aider - http://forum.developers.facebook.com/viewtopic.php?pid=124579#p124579 –

0

Vous pouvez faire quelque chose comme ceci:

 

FB.Facebook.apiClient.users_hasAppPermission('publish_stream', function(has_perms) { 
    if(has_perms) { 
     // User has granted the publish_stream permission 
    } else { 
     // User has not granted the publish_stream permission 
    } 
}); 
 

la seconde pour la fonction param users_hasAppPermission est un rappel qui renvoie le résultat de la vérification.