hi je développe une application sur Facebook avec C # SDK et je souhaite que l'utilisateur qui a aimé ma page ne peut utiliser que ma demande. (Comme WOOBOX ) P>
J'ai trouvé des solutions dans php dans Ce lien mais il n'y a pas de Source sur .net Comment puis-je obtenir les informations aimées dans ASP.NET P>
Je trouve un autre exemple de php dans Ceci < / a> lien encore mais je ne peux pas trouver c # réponse: \ p>
merci p>
5 Réponses :
this.canvasAuthorizer = new CanvasAuthorizer { Permissions = new[] { "user_about_me", "publish_stream", "offline_access", "user_likes", "friends_about_me" } }; this.canvasAuthorizer.Authorize(); if (FacebookWebContext.Current.IsAuthorized()) { this.facebookWebClient = new FacebookWebClient(FacebookWebContext.Current); string requested_Data = HttpContext.Current.Request.Form["signed_request"]; dynamic decodedSignedRequest = FacebookSignedRequest.Parse(this.facebookApplication, requested_Data); if (decodedSignedRequest.Data.page != null) { // Funs Page this.IsLike = decodedSignedRequest.Data.page.liked; } else { // Application Page dynamic likes = this.facebookWebClient.Get("/me/likes"); foreach (dynamic like in likes.data) { if (like.id == this.FacebookFanPageID) { this.IsLike = true; } } } }
Ceci n'est possible qu'avec les API hérités ou avec le option 1) API de repos p> Utilisation de l'API héritée, il est possible d'utiliser pages./a> p> Faites ceci en c # comme suit. P> option 2) côté client p> la méthode Comment puis-je savoir quand un utilisateur clique sur un bouton similaire? strong> p>
Si vous utilisez la version XFBML du bouton, vous pouvez vous abonner à
l'événement 'Edge.create' via fb.event.subscribe. p>
blockQuote> générer un bouton de type FBXML ici . p> puis abonnez-vous à la user_likes Permission
. Comme vous voulez une solution sans autorisations spécifiques, je vous montrerai 2 méthodes. Utilisez-les en combinaison avec Ajax pour rafraîchir la page lorsqu'un utilisateur appuie sur comme code>.
fbxml code>. Ceci est fait avec JavaScript sur le client, en vous abonnant à un événement lorsque l'utilisateur clique sur le bouton
comme code>. Il est documenté ici . P>
bord.create code> à l'aide de sdk javascript . Placez ce code dans le document
Corps CODE> de préférence juste avant la fin. P>
<script type="text/javascript">
<!--
window.fbAsyncInit = function () {
FB.init({ appId: '245693305442004', status: true, cookie: true, xfbml: true });
FB.Event.subscribe('edge.create',
function (href, widget) {
// Do something here
alert('User just liked '+href);
});
(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);
} ());
};
//-->
</script>
Salut @Checodageking je vais essayer l'option 2 mais pouvez-vous me dire comment pouvez-vous obtenir UID en option1? Parce que dans ce cas, l'utilisateur n'a pas donné la permission de nous donner une information et sans UID, je ne peux pas obtenir la page.
Salut encore j'ai essayé l'option 2 mais cela fonctionne lorsque l'utilisateur aime ou n'aime pas une page, mais je ne pouvais pas obtenir cela si l'utilisateur aime la page avant: \ Avez-vous une opinion? Merci.
Je pense que vous obtenez l'UID si vous ajoutez un bouton de connexion afin que les utilisateurs soient connectés à votre page. Theres une fonction fb.getuserid.
Dans l'application Canvas, je ne peux pas avoir de bouton de connexion Facebook (ce n'est pas logique car l'utilisateur est déjà connecté à Facebook), donc je ne peux donc pas obtenir l'identifiant de l'utilisateur?
Si l'utilisateur est déjà connecté, j'aurais pensé que vous pouvez simplement appeler fb.getuserid () sur le client. Cela ne fonctionne-t-il pas?
Apparemment, si vous appelez l'API Isfan sans UID, cela déduira l'utilisateur connecté actuellement, cela nécessite évidemment un appel côté client.
Si votre application est une application en toile, vous pourriez (devriez-vous?) Utilisez le signé_request A> Paramètre Pour vérifier si l'utilisateur aime la page, c'est sur: Request["signed_request"]
Salut @CHesles pouvez-vous me donner des informations sur décod_signed_request ()?
Consultez la "Vérifier et décoder" en direction de Signé_Request Docs pour un contour sur Comment implémenter cela. Il y a 2 parties, une signature et une charge utile. La charge utile est juste BASE64 codé , vous devrez donc déterminer comment le décoder en C #; Je ne suis pas un gars .net mais je suis sûr qu'il y a une bibliothèque de décodeur quelque part.
Ceci peut être effectué en PHP à l'aide d'une requête SQL
`$result = $facebook->api(array( "method" => "fql.query", "query" => "SELECT uid FROM page_fan WHERE uid=$uid AND page_id=$page_id" ));
Même problème que je ne pouvais pas obtenir de l'uid sans obtenir la permission afin que cela ne fonctionne pas: \
Voir sans créer une session FB Vous ne pouvez accéder à aucun détail à l'intérieur d'une application .. La première étape posera toujours 4 ensemble de base d'autorisations (selon vos besoins par votre application). Ensuite, dans les étapes suivantes, vous pouvez décider en fonction de l'UID si cette personne aime votre page ou non ..
Vous obtenez une demande signée lorsque votre page Web est chargée dans Facebook Canvas App; Vous devriez être capable d'analyser une demande signée quelque chose de similaire à suivre:
if (Request.Params["signed_request"] != null) { string payload = Request.Params["signed_request"].Split('.')[1]; var encoding = new UTF8Encoding(); var decodedJson = payload.Replace("=", string.Empty).Replace('-', '+').Replace('_', '/'); var base64JsonArray = Convert.FromBase64String(decodedJson.PadRight(decodedJson.Length + (4 - decodedJson.Length % 4) % 4, '=')); var json = encoding.GetString(base64JsonArray); var o = JObject.Parse(json); var lPid = Convert.ToString(o.SelectToken("page.id")).Replace("\"", ""); var lLiked = Convert.ToString(o.SelectToken("page.liked")).Replace("\"", ""); var lUserId= Convert.ToString(o.SelectToken("user_id")).Replace("\"", ""); }
Merci @imran tu as sauvé mon temps :)
Pourriez-vous expliquer pourquoi la réponse existante n'est-elle pas ce que vous recherchez?
Parce qu'il a besoin d'autorisations, j'ai besoin d'un code sans obtenir la permission comme WOOBOX.