Überprüfen Sie, ob der Benutzer die Seite über die Graph-API mag

Lesezeit: 2 Minuten

Ich habe ein paar ähnliche Fragen gesehen, aber ich denke, das ist neu …

Ich versuche, einem Blog ein Popover hinzuzufügen, das einen Facebook-Like-Button für eine Facebook-Seite enthält und nur angezeigt wird, wenn der Benutzer die Facebook-Seite nicht bereits mag.

Wenn Sie die Dokumentation durchlesen, sollte dies mit der Graph-API-Methode pages.isFan möglich sein, aber erfordert dies, dass der Benutzer Berechtigungen erteilt? Wenn ja, wäre es möglich, dass die App keine Berechtigungen anfordert, sondern ordnungsgemäß fehlschlägt?

Jede Hilfe sehr geschätzt.

Uberprufen Sie ob der Benutzer die Seite uber die Graph API
Richard

Ob einem Benutzer eine Seite gefällt, erkennen Sie an der signed_request, die in der Anfrage von Facebook gesendet wird. Sie müssen die Graph-API nicht abfragen.

Wir verwenden c# und bekommen es so:

protected void Page_Load(object sender, EventArgs e)
    {
        Result = DecodePayload(Request["signed_request"]);
    }

    public JObject DecodePayload(string payload)
    {
        var encoding = new UTF8Encoding();
        var decodedJson = payload.Split('.')[1].Replace("=", string.Empty).Replace('-', '+').Replace('_', "https://stackoverflow.com/");
        var base64JsonArray = Convert.FromBase64String(decodedJson.PadRight(decodedJson.Length + (4 - decodedJson.Length % 4) % 4, '='));
        Json = encoding.GetString(base64JsonArray);
        var result = JObject.Parse(Json);
        return result;
    }

Dann auf der Seite

<% if (Result["page"] == null || Result["page"]["liked"] == null || !(bool) Result["page"]["liked"])
     {%> 
 Content if liked
<%}%>

Noch etwas Wichtiges Ab dem 30. März ändert sich das Seitenlayout in die Zeitleiste und Sie sollten sich eines Fehlers bewusst sein, der die Seite derzeit nicht aktualisiert, wenn Sie sie mögen, sehen Sie hier:

Kennt jemand eine Lösung für die fehlende Seitenaktualisierung auf Facebook-Timeline-Seiten beim Liken?

AKTUALISIEREN

Die php zum Entschlüsseln der signierten Anfrage lautet:

   function parse_signed_request($signed_request, $secret) {
  list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

  // decode the data
  $sig = base64_url_decode($encoded_sig);
  $data = json_decode(base64_url_decode($payload), true);

  if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
    error_log('Unknown algorithm. Expected HMAC-SHA256');
    return null;
  }

  // check sig
  $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
  if ($sig !== $expected_sig) {
    error_log('Bad Signed JSON signature!');
    return null;
  }

  return $data;
}

function base64_url_decode($input) {
  return base64_decode(strtr($input, '-_', '+/'));
}

911010cookie-checkÜberprüfen Sie, ob der Benutzer die Seite über die Graph-API mag

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy