Problem:
Wenn ein User auf meine app kommt, möchte ich rausfinden, zu welchen Gruppen er gehört. Diese Info brauche ich für einen sehr speziellen Authentifikationsprozess bei dem nur Mitglieder einer bestimmten Gruppe bestimmte Inhalte der App sehen können.
Lösung:
Das ganze geht natürlich nicht ohne die Permissions des Users abzufragen. Man zwingt bittet den User zuerst, die Permission user_groups zu gewähren und anschließend kann man über die Facebook PHP Api ganz einfach die Groups abfragen! Hier der ganze Code:
require_once 'facebook.php';
$secret = "12345678901234567890123456789012"; //App Secret
$id = "123456789012345"; //App ID
$fb = new Facebook(array(
'appId' => $id,
'secret' => $secret,
'cookie' => true
));
$fbData = $fb->getSignedRequest();
//if you don't have the user ID, this means your user hasn't given any permissions yet
if(!$fbData['user_id']){
//ask for permissions
$auth_url = "https://www.facebook.com/dialog/oauth?scope=user_groups&client_id=".$id."&redirect_uri=https://www.facebook.com/pages/PAGENAME/PAGEURL?sk=app_123456789012345";
echo '<script>top.location.href = "'.$auth_url.'";</script>';
die();
}
//get an access token
$access_token = $fb->getAccessToken();
//get the groups
$res = $fb->api('/me/groups?access_token='.$access_token, 'GET');
//output
echo "Groups:<br>";
echo "<ul>";
foreach($res['data'] as $k => $group){
echo "<li>".$group['name']." (ID ".$group['id'].")</li>";
}
echo "</ul>";