2010-08-29 8 views
2

J'intègre l'authentification Facebook et Twitter sur mon nouveau site Web. Lorsque l'utilisateur utilise Facebook ou Twitter pour s'authentifier, j'obtiens l'AccessToken et le stocke dans la base de données et je le lie à l'ID utilisateur de l'utilisateur qui se connecte (l'utilisateur doit lier son compte Facebook ou Twitter à son compte sur mon site)Facebook et Twitter Connect: Stockage AccessToken utilisateur

maintenant la prochaine fois, il authentifie, je reçois le AccessToken, vérifier dans la base de données si cette accesstoken est liée à tout utilisateur, si oui, je le connecte directement.

maintenant sur Twitter , Je reçois toujours le même accesstoken, mais sur facebook (appelé SessionKey) il n'est pas corrigé mais il contient le UserID.

La question est comment puis-je lier un compte facebook d'utilisateur à un compte sur mon site? devrais-je utiliser son identifiant facebook et le lier à mon ID utilisateur?

Merci.

Répondre

2

Vous devez utiliser l'ID utilisateur Facebook. C'est unique pour chaque utilisateur et ne change jamais. Même chose pour twitter. Vous pouvez conserver le jeton d'accès si vous avez besoin d'accéder à Twitter API, mais utilisez l'ID utilisateur Twitter pour créer un lien vers le compte de votre site. Les jetons d'accès peuvent changer, même si vous obtenez un jeton d'accès avec les autorisations offline_access, il peut être révoqué par l'utilisateur.

0

Vous devez demander l'autorisation étendue offline_access pendant le processus d'autorisation.

Par exemple:

https://graph.facebook.com/oauth/authorize?client_id=<CLIENT ID>&redirect_uri=<YOUR CALL BACK URL>&scope=user_photos,user_videos,publish_stream,read_stream,offline_access 

http://developers.facebook.com/docs/authentication/#exchange_session

Une fois que l'utilisateur autorise votre application, vous recevrez sans expiration de l'utilisateur access_token qui peut ensuite être stockée et réutilisée.

En supposant que vous utilisez PHP, faire des appels API avec php-sdk et access_token ressemblerait à;

$uid = $myDB_StoredUserID; 
$access_token = $myDB_StoredToken; 
$facebook->api($uid.'/feed', 'get', array('access_token' => $access_token));