2010-07-27 3 views
8

J'ai un site Web qui a des utilisateurs et des utilisateurs qui peuvent s'ajouter comme amis. Dernièrement, j'ai vu beaucoup d'applications Web qui ont une fonction où vous pouvez importer vos amis de Facebook directement dans leur application web. Comment ce type d'importation de la liste d'amis Facebook est-il implémenté?Comment importer des amis Facebook sur le site Web

J'ai regardé dans les docs de l'API Facebook, et je ne trouve vraiment rien de précis sur ce point.

J'utiliserais probablement l'API Facebook pour faire une liste des amis de l'utilisateur. À partir de là, comment puis-je trouver des utilisateurs sur mon site qui sont membres de cette liste? Est-ce que ce type de système ne fonctionne qu'avec d'autres utilisateurs qui ont déjà utilisé l'ami Facebook pour effectuer une recherche, de sorte que vous pouvez leur attacher un compte Facebook? Il ne semble vraiment pas y avoir beaucoup sur ce sujet, même si j'ai vu beaucoup de sites le faire, donc toute aide, aussi basique soit-elle, serait très appréciée.

+0

Vous pouvez le faire uniquement si vous stockez les ID utilisateur fb de vos utilisateurs (les utilisateurs de votre site peuvent associer leurs comptes à des profils Facebook et stocker ces informations). – serg

+0

Qu'en est-il de l'utilisation de certaines informations d'identification que Facebook fournit comme l'e-mail? Y a-t-il un moyen de faire correspondre les informations d'un utilisateur sur mon site à leurs informations sur Facebook? –

Répondre

28

Les bases de ce dont vous aurez besoin pour ce centre autour de registering your site comme "une application Facebook" et en utilisant le Graph API.

Jetez un oeil à la section "Se connecter avec Facebook" de this page. Fondamentalement, lorsque vous enregistrez votre "application" vous aurez un identifiant d'application et un "secret d'application" (qui est juste une chaîne de caractères, et ne doit jamais être rendu public ou n'importe qui avec lui pourrait usurper votre application). L'exemple sur la page montre une petite quantité de JavaScript pour initialiser l'application de votre site Web, à quel point vous êtes prêt à intégrer Facebook. Juste en dessous se trouve un exemple du bouton "Login with Facebook", que vos utilisateurs utiliseraient pour indiquer qu'ils souhaitent autoriser votre site à accéder à certaines de leurs données Facebook (la liste d'amis, par exemple) . Vous pouvez hautement personnaliser les specific permissions demandes de votre site de l'utilisateur dans cette balise de connexion, et vos utilisateurs recevront une invite comme this one demandant spécifiquement la permission d'autoriser votre site à accéder à leurs données Facebook.

En revenant sur this page encore (même si cela peut être sur d'autres pages aussi, la documentation de Facebook change beaucoup), en faisant défiler un peu plus loin, vous trouverez un exemple simple (en PHP) d'intégration Facebook très basique. La page d'exemple présente l'utilisateur avec un bouton "Se connecter avec Facebook" et se recharge après avoir cliqué sur le bouton (en s'abonnant à l'événement Facebook API correct en JavaScript). Lors du rechargement, l'utilisateur dispose désormais d'un cookie chiffré (en supposant que l'utilisateur a accepté la demande d'autorisation) que l'exemple de page peut lire. Le "secret d'application" est utilisé pour déchiffrer le cookie, qui contient l'identifiant Facebook de l'utilisateur et le jeton d'accès qui autorise votre site à faire des demandes pour les informations Facebook de cet utilisateur. L'utilisation du jeton d'accès dans les requêtes de l'API Graph vous permettra de recevoir les données de ces requêtes. Les requêtes API Graph ne sont que des requêtes GET qui renvoient des données JSON. Ainsi, une fois que vous avez le jeton d'accès (et l'ID utilisateur comme point de départ), vous pouvez effectuer ces requêtes où vous voulez. Ils peuvent être rendus côté client en JavaScript (en plus d'utiliser Social Plugins et d'autres widgets Facebook) pour "Facebookify" l'expérience de vos utilisateurs sur votre site sans exposer beaucoup, le cas échéant, des données ou des responsabilités à votre site. Ou les demandes peuvent être faites à partir de votre code côté serveur à l'arrière dans le but de stocker les données demandées et de l'utiliser comme votre site le juge bon (comme la liste d'amis).

Une demande d'API pour obtenir une liste des amis serait quelque chose comme ceci:

https://graph.facebook.com/me/friends?access_token=your_access_token

(Cependant, vous souhaitez remplacer le me dans le chemin avec le Facebook ID de l'utilisateur dont des amis que vous this pagethis page).

L'API Graph (comme son nom l'indique) s'étend à your_access_token avec le jeton d'accès actuel.) Exemple de liens pour votre propre compte, en supposant que vous êtes connecté à Facebook. vers l'extérieur à travers le graphique social de Faceb ook des données. Tout objet JSON qui revient avec un id peut être demandé dans sa propre demande d'API pour voir plus de ses informations. Toutes les informations que vous voulez, telles que les adresses e-mail des amis de l'utilisateur, seront disponibles si et (espérons-le) seulement si les autorisations de l'utilisateur et ami de l'utilisateur en question le permet. (Désolé, mais si les amis de l'utilisateur ont spécifiquement dit que leurs amis ne peuvent pas donner accès à cette information, alors ce n'est pas disponible.)

Ainsi, une fois que vos utilisateurs accordent à votre site les permissions demandées pour voir leurs données Facebook, vous pouvez récolter toutes les données que vous souhaitez (et auxquelles vous avez le droit d'accéder) disponibles dans l'API graphique. (.. Je déteste utiliser le mot « moisson » là-bas, mais vous avez l'idée agir de façon responsable, bien sûr) donc votre processus, du point de vue de l'utilisateur dans un cas donné, serait:

  1. Demandez au utilisateur à se connecter avec Facebook, en demandant des autorisations spécifiques.
  2. Recevoir ces autorisations de l'utilisateur (sinon le processus se termine ici).
  3. Effectuez des demandes d'API graphique back-end à partir de votre code serveur pour obtenir les informations pertinentes à partir du graphe social Facebook de l'utilisateur.
  4. Présentez à l'utilisateur des options que vous pourriez comprendre (comme des adresses e-mail ou même des noms avec des utilisateurs que vous avez déjà), que ce soit des utilisateurs que vous avez déjà (hé, cet ami est sur notre site, aimeriez-vous dire bonjour?) ou invite sur votre site (nous n'avons pas d'enregistrement de votre ami visitant notre site, cliquez ici pour les inviter!), etc
  5. L'utilisateur continue alors d'interagir avec toutes les fonctionnalités de votre site présente dans cette affaire.

Avez-vous un sens? Comme je l'ai mentionné, la documentation pour tout cela sur Facebook change beaucoup (j'ai trouvé plusieurs liens morts dans leur propre site en écrivant ceci). Leurs interfaces programmatiques changent assez souvent aussi. Ils peuvent développer des façons plus simples de le faire, mais une fois que vous êtes configuré et que vous sortez des appels de l'API Graph et de tout cela, il devient assez simple d'intégrer votre (vos) site (s) à Facebook.

0

Vous êtes en mesure d'obtenir la liste des amis qui se connectent à votre site Web en utilisant Facebook Login. TOUTEFOIS, seuls les amis qui sont également enregistrés sur votre site Web seront affichés. (En Facebook terme, seuls les amis qui utilisent également la même application)

De la page du développeur de facebook, vous pouvez obtenir les codes suivants.

login.php

$fb = new Facebook\Facebook([ 
    'app_id' => '{app-id}', // Replace {app-id} with your app id 
    'app_secret' => '{app-secret}', 
    'default_graph_version' => 'v2.2', 
    ]); 

$helper = $fb->getRedirectLoginHelper(); 

$permissions = ['email','user_friends']; // Optional permissions (THIS IS WHERE YOU GET THE PERMISSION FOR FRIEND'S LIST) 
$loginUrl = $helper->getLoginUrl('https://example.com/fb-callback.php', $permissions); 

echo '<a href="' . htmlspecialchars($loginUrl) . '">Log in with Facebook!</a>'; 

Fb-rappel.php

$fb = new Facebook\Facebook([ 
    'app_id' => '{app-id}', // Replace {app-id} with your app id 
    'app_secret' => '{app-secret}', 
    'default_graph_version' => 'v2.2', 
    ]); 

$helper = $fb->getRedirectLoginHelper(); 

try { 
    $accessToken = $helper->getAccessToken(); 
} catch(Facebook\Exceptions\FacebookResponseException $e) { 
    // When Graph returns an error 
    echo 'Graph returned an error: ' . $e->getMessage(); 
    exit; 
} catch(Facebook\Exceptions\FacebookSDKException $e) { 
    // When validation fails or other local issues 
    echo 'Facebook SDK returned an error: ' . $e->getMessage(); 
    exit; 
} 

if (! isset($accessToken)) { 
    if ($helper->getError()) { 
    header('HTTP/1.0 401 Unauthorized'); 
    echo "Error: " . $helper->getError() . "\n"; 
    echo "Error Code: " . $helper->getErrorCode() . "\n"; 
    echo "Error Reason: " . $helper->getErrorReason() . "\n"; 
    echo "Error Description: " . $helper->getErrorDescription() . "\n"; 
    } else { 
    header('HTTP/1.0 400 Bad Request'); 
    echo 'Bad request'; 
    } 
    exit; 
} 

// Logged in 
echo '<h3>Access Token</h3>'; 
var_dump($accessToken->getValue()); 

// The OAuth 2.0 client handler helps us manage access tokens 
$oAuth2Client = $fb->getOAuth2Client(); 

// Get the access token metadata from /debug_token 
$tokenMetadata = $oAuth2Client->debugToken($accessToken); 
echo '<h3>Metadata</h3>'; 
var_dump($tokenMetadata); 

// Validation (these will throw FacebookSDKException's when they fail) 
$tokenMetadata->validateAppId({app-id}); // Replace {app-id} with your app id 
// If you know the user ID this access token belongs to, you can validate it here 
//$tokenMetadata->validateUserId('123'); 
$tokenMetadata->validateExpiration(); 

if (! $accessToken->isLongLived()) { 
    // Exchanges a short-lived access token for a long-lived one 
    try { 
    $accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken); 
    } catch (Facebook\Exceptions\FacebookSDKException $e) { 
    echo "<p>Error getting long-lived access token: " . $helper->getMessage() . "</p>\n\n"; 
    exit; 
    } 

    echo '<h3>Long-lived</h3>'; 
    var_dump($accessToken->getValue()); 
} 

$_SESSION['fb_access_token'] = (string) $accessToken; 

// User is logged in with a long-lived access token. 
// You can redirect them to a members-only page. 
//header('Location: https://example.com/members.php'); 

A login.php vous pouvez voir la ligne suivante

$permissions = ['email','user_friends']; 

Cela demandera à l'utilisateur l'autorisation d'accéder aux amis qui utilisent aussi l'application.

Ce code obtenir la liste d'amis du graphique

try { 
      // Returns a `Facebook\FacebookResponse` object 
      $response = $this->fb->get('/me?fields=id,name,email,gender,user_friends,', $this->token); 
     } catch(Facebook\Exceptions\FacebookResponseException $e) { 
      echo 'Graph returned an error: ' . $e->getMessage(); 
      exit; 
     } catch(Facebook\Exceptions\FacebookSDKException $e) { 
      echo 'Facebook SDK returned an error: ' . $e->getMessage(); 
      exit; 
     } 

Les codes sont tous échantillon et sont pour référence seulement si vous avez l'idée de ce qui se passe dans le back-end. Je vous recommande vivement de jeter un oeil à https://developers.facebook.com/docs/php/howto/example_facebook_login

Si vous avez d'autres questions concernant le flux, vous pouvez ensuite créer une nouvelle question pour obtenir vos réponses.

Mise à jour: Manipulation user_friends < - c'est ce que vous cherchez

Une fois la connexion Facebook sur votre site, le membre connecté recevront un identifiant unique et permanent à votre site Web. Lorsque vous demandez le graphique user_friends de ce membre, Facebook Graph renvoie également une liste d'objets utilisateur pour les amis qui utilisent cette application. Et ces objets incluent l'identifiant de l'utilisateur (qui est unique à chaque application), à partir de l'identifiant, vous serez en mesure de lier des amis qui se connaissent dans votre application.

https://developers.facebook.com/docs/graph-api/reference/user/

Exemple Utilisateur A (ID: 1234) et l'utilisateur B (ID: 5678)

1) l'utilisateur A Connectez-vous à votre site Web en utilisant Facebook.

2) Vous essayez de demander user_friends à partir de Facebook de l'utilisateur A mais ne renvoie rien.

3) Utilisateur B enregistrer et se connecter à votre site Web en utilisant Facebook.

4) Vous essayez de demander user_friends de l'utilisateur B et graphiques Facebook retourne utilisateur ID A 1234.

De là, vous êtes en mesure de comprendre 5679 et 1234 sont des amis et vous êtes en mesure de concevoir votre base de données autour de cela pour associer vos membres en tant qu'amis.

Questions connexes