19
Okt
2010
admin

Erweiterte Berechtigungen anfordern

Wenn ein Benutzer eine unserer Anwendungen Autorisiert, gestattet er uns damit, auf einige seiner persönlichen Daten zuzugreifen. Standardmäßig zählen dazu Name, Profilbild, Geschlecht, Netzwerke, Nutzerkennnummer, Freundesliste und alle anderen Informationen die der Benutzer mit Allen teilt. Sollten uns diese Berechtigungen nicht genügen, können wir den Benutzer bitten, unserer Anwendung erweiterte Rechte einzuräumen.

Diese erweiterten Rechte gliedern sich in drei Kategorien:

  • Veröffentlichungs Berechtigungen
  • Daten Berechtigungen
  • Seiten Berechtigungen

Veröffentlichungs Berechtigungen
Immer, wenn es uns darum geht, nicht nur Daten abzufragen, sondern zu erstellen, bzw. zu ändern, benötigen wir Berechtigungen zum veröffentlichen.

Berechtigung Beschreibung
publish_stream Berechtigt die Anwendung folgende Inhalte zu erstellen: Einträge im Newsfeed (beim Nutzer oder bei einem Freund), Kommentare, Notizen, Links, Alben und Fotos. Außerdem können Posts als "Gefällt mir" gekennzeichnet werden.
create_event Berechtigt die Anwendung Events zu erstellen und zu bearbeiten.
rsvp_event Berechtigt die Anwendung den Nutzer bei einem Event anzumelden.
sms Berechtigt die Anwendung Nachrichten zu schicken und auf Nachrichten zu antworten.
offline_access Ein Access Token ist normalerweise nur eine begrenzte Zeit gültig. Nur solange ein Token gültig ist können Anfragen damit durchgeführt werden, anschließend muss ein neuer Token angefordert werden. Beim offline_access verfällt die Gültigkeit des Tokens niemals.

Daten Berechtigungen
Mit den Daten Berechtigungen haben wir die Möglichkeit an Profildaten, Fotos und andere Informationen, die Benutzer betreffen, zu kommen.

Benutzer Berechtigung Berechtigung für Freundesdaten Beschreibung
user_about_me friends_about_me Gewährt Zugriff auf den "Über mich" Bereich im Profil im Info-Tab
user_activities friends_activities Gewährt Zugriff auf die Aktivitäten.
user_birthday friends_birthday Gewährt Zugriff auf das Geburtsdatum.
user_education_history friends_education_history Gewährt Zugriff auf den Bereich "Ausbildung und Arbeit"
user_events friends_events Gewährt Zugriff auf die Liste der Events des Benutzers.
user_groups friends_groups Gewährt Zugriff auf die Liste der Gruppen, in denen der Benutzer Mitglied ist.
user_hometown friends_hometown Gewährt Zugriff auf die Heimatstadt des Benutzers.
user_interests friends_interests Gewährt Zugriff auf die Liste der Interessen des Benutzers.
user_likes friends_likes Gewährt Zugriff auf eine Liste aller Seiten, die mit "Gefällt mir" gekennzeichnet wurden.
user_location friends_location Gewährt Zugriff auf den derzeitigen Wohnort.
user_notes friends_notes Gewährt Zugriff auf die Notizen des Benutzers.
user_online_presence friends_online_presence Gewährt Zugriff auf den Onlinestatus.
user_photo_video_tags friends_photo_video_tags Gewährt Zugriff auf die Fotos, in denen der Benutzer markiert wurde.
user_photos friends_photos Gewährt Zugriff auf die Fotos, die der Benutzer hochgeladen hat.
user_relationships friends_relationships Gewährt Zugriff auf Familien- und persönliche Beziehungen, sowie den Beziehungsstatus.
user_relationship_details friends_relationship_details Gewährt Zugriff auf Beziehungsdetails.
user_religion_politics friends_religion_politics Gewährt Zugriff auf die religiösen Ansichten.
user_status friends_status Gewährt Zugriff auf die letzte Statusnachricht des Benutzers.
user_videos friends_videos Gewährt Zugriff auf Videos, die der Benutzer hochgeladen hat.
user_website friends_website Gewährt Zugriff auf die Webseiten URL des Benutzers.
user_work_history friends_work_history Gewährt Zugriff auf eine Liste der bisherigen Arbeitgeber, bzw. Beschäftigungen.
email not available Gewährt Zugriff auf die Email-Adresse des Benutzers. SPAM ist verboten. Die Richtlinien für den Umgang mit Emails finden sich hier und hier.
read_friendlists not available Gewährt Zugriff auf auf alle Freundeslisten, die der Benutzer erstellt hat.
read_insights not available Gewährt Zugriff auf die Insights (Statistiken) Daten für Facebook Seiten, Anwendungen und Domains, die dem Benutzer gehören.
read_mailbox not available Gewährt Zugriff auf den Posteingang des Benutzers. Man muss eine Anfrage stellen, auf die Weiße Liste zu kommen, bevor man dieses erweiterte Recht anfordern kann.
read_requests not available Gewährt Zugriff auf die Freundschaftsanfragen.
read_stream not available Gewährt Zugriff auf alle Nachrichten im News Feed und erlaubt diesen zu durchsuchen.
xmpp_login not available Bietet Anwendungen, die den Facebook Chat integrieren, die Möglichkeit, Benutzer einzuloggen.
ads_management not available Gewährt das Recht auf das Verwalten von Ads und das Aufrufen der Facebook Ads API.

Seiten Berechtigungen

Berechtigung Beschreibung
manage_pages Gibt der Anwendung die Möglichkeit einen Access Token für Seiten zu erhalten, die der Benutzer administriert.

Beispiel (PHP)
Um diese erweiterten Berechtigungen anzufordern, genügt es, die erforderlichen Berechtigungen beim Erzeugen der Login URL an die Methode getLoginUrl() zu übergeben:

<?php

require 'library/facebook.php';

$facebook = new Facebook(array(
  'appId'  => '163466690349624', // Anwendungs ID
  'secret' => '5ec985cded140817a2465c6e924f949c', // Anwendungs-Geheimcode
  'cookie' => true, 
));

if ($facebook->getSession()) { // Session vorhanden?
  print 'Erweiterte Berechtigungen wurden erteilt.';
} else { // Keine Session vorhanden.
  $params = array(
    'fbconnect' => 0,
    'canvas'    => 1,
    'req_perms' => 'user_birthday, user_interests, user_photos', // Erweiterte Berechtigungen anfordern.
  );

  $loginUrl = $facebook->getLoginUrl($params); // URL zum Autorisierungsdialog erstellen.
  print '<script>top.location.href = "' . $loginUrl . '"</script>'; // Weiterleitung zum Anfordern der Autorisierung.
}
?>

In diesem Beispiel wollen wir also die Berechtigungen für den Zugriff auf das Geburtsdatum, die Interessen und die Fotos des Benutzers. Rufen wir diese Anwendung auf, erhalten wir folgenden Dialog:

Bestätigen wir diesen Dialog, sehen wir anhand der Meldung, dass die Berechtigungen erteilt wurden.

Beispiel (JavaScript)
Ich nutze, wenn möglich, lieber PHP zur Authentifizierung, da ich die Erfahrung gemacht habe, dass die JavaScript Variante teilweise noch fehlerbehaftet war, bzw. ist. Außerdem werden die Popup Fenster oftmals vom Browser geblockt. Der Vollständigkeit halber, möchte ich hier trotzdem die JavaScript Variante des PHP Beispiels einmal erläutern:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:fb="http://www.facebook.com/2008/fbml">
  <body>
    <div id="fb-root"></div>
    <script src="http://connect.facebook.net/de_DE/all.js"></script>
    <script>
      FB.init({appId: '163466690349624',
               status: true,
               cookie: true, 
               xfbml: true
             });

      function showPermsDialog() {
        FB.login(function(response) {
          alert(response.perms);
        }, {perms:'user_birthday, user_interests, user_photos'});
      }

    </script>
    <a href="" onclick="showPermsDialog(); return false;">Einloggen</a>
  </body>
</html>

Hier muss natürlich als erstes die JavaScript SDK eingebunden werden (Zeile 6). Anschließend wird die Library initialisiert (Zeile 8-12). Nun kann man die Library für den Login nutzen. Ich habe den Aufruf des Login-, bzw. Berechtigungs-Dialoges in eine Funktion gepackt, um den Dialog bequem im onclick-Event aufzurufen. Wenn der Benutzer den Dialog bestätigt, werden die Berechtigungen in einer Alert-Box angezeigt (Zeile 16).

Fazit
Grundsätzlich sollte man sparsam mit dem Einholen von Berechtigungen sein und sie nur an der Stelle anfordern, an der sie benötigt werden. Wer gleich beim ersten Seitenaufruf mehrere verschiedene Rechte einholen möchte, ohne dass für den Benutzer ersichtlich ist, wofür die Anwendung diese Rechte benötigt, wird viele Besucher verschrecken. Es ist für den Benutzer wesentlich transparenter, wenn er einer Anwendung nach einem Klick auf den Link "jetzt veröffentlichen" die Rechte zum Veröffentlichen von Nachrichten im News-Feed gibt, als wenn er beim ersten Besuch der Anwendung aufgefordert wird, diverse Berechtigungen zu erteilen, ohne zu wissen, was die Anwendung damit macht.

Hinweis
Du kannst alle Codebeispiele von AboutTheWeb über ein SVN Repository auschecken. Dieses Beispiel findest du unter folgender Adresse:
http://svn.abouttheweb.de/atwtutorials/trunk/extended-permissions/

Alternativ kannst Du alle Codebeispiele über das AboutTheWeb github Repository auschecken.

Ähnliche Artikel

Bild des Benutzers Gast
Gast
Fr, 01/28/2011 - 10:29

ist die Aussage das der Token nicht verfällt, wenn die dementsprehcende Permission offline_access eingeholt worden ist?

X
Laden