2 votes

Facebook SDK - accéder à un album public par identifiant sans authentification

Je développe un site web en ASP.NET. Il contiendra des articles de texte et certains d'entre eux contiendront des photos de mon compte facebook en plus du texte. Notez que je vais utiliser uniquement les albums publics de mon compte.

J'ai donc créé une table sql et j'ai lié la fonction articles le albums et le photos (en fait, le IDs de tous). J'ai déjà utilisé sdk api facebook et c'était une grande bibliothèque.

Il est évident que tout visiteur de mon site web (même s'il n'a pas de compte facebook) ne pourra pas voir les articles et le site internet. photos avec le nombre de visites sur facebook et sans authentification via facebook oAuth pour y accéder.

Eh bien, voici les questions :

1) Comment puis-je obtenir les photos qu'un album public contient en album id y user id sans authentification ? (Je ne sais pas, peut-être que je devrais utiliser d'autres paramètres que l'id de l'album et l'id de l'utilisateur).

2) Comment puis-je obtenir les propriétés (nom, id, etc) d'un album public ?

2voto

Juicy Scripter Points 16091

Pour récupérer la liste des albums de l'utilisateur, vous devez envoyer une requête GET à l'API graphique :

https://graph.facebook.com/me/albums?access_token=...

Et pour récupérer la liste des photos :

https://graph.facebook.com/ALBUM_ID?access_token=...

Mais vous ne pouvez pas lire les albums (et les photos) de l'utilisateur sans authentification et sans demander l'autorisation de l'utilisateur. user_photos permission.

Selon album documentation :

Pour lire un album, vous devez

  • Tout jeton d'accès valide s'il est public et appartient à un Page
  • Le site user_photos s'il appartient à un Utilisateur
  • Le site friend_photos s'il appartient à une L'utilisateur ami

En général, vous n'avez donc que deux options pour obtenir le résultat souhaité :

  1. Utilisez la page Facebook pour stocker tous les Albums / Photos que vous souhaitez afficher sur le site
    • Lisez-les en utilisant Application access_token .
    • Cela vous permettra de contourner complètement le flux d'authentification.
  2. Utilisez votre compte personnel pour stocker Albums / Photos

2voto

Nitzan Tomer Points 11798

Sans jeton d'accès, il y a très peu de choses que vous pouvez obtenir de l'api graphique. Essayez vous-même en dirigeant votre navigateur vers : http://graph.facebook.com/YOU_USER_ID .

Vous pouvez également vérifier les tables de champs/connexions dans l'application Documentation de l'objet utilisateur où il est écrit "No access_token required" dans le champ de saisie de l'adresse. Permissions colonne (3ème) que vous pouvez obtenir sans jeton.

Si vous souhaitez obtenir d'autres données vous concernant et les rendre publiques sur votre site, vous avez deux possibilités :

  1. Utilisez le flux d'authentification côté serveur Obtenez un jeton d'accès de longue durée (60 jours), sauvegardez-le et utilisez-le pendant les 60 jours suivants pour obtenir vos données de Facebook. Puis, lorsqu'il aura expiré, passez à nouveau par le processus d'authentification. Ce sera seulement vous qui devrez passer par là, pas vos utilisateurs, et seulement une fois tous les 60 jours.

  2. Connectez-vous vous-même, authentifiez-vous auprès de votre application, récupérez toutes les données et faites-les persister dans votre base de données, puis présentez-les à vos utilisateurs. Vous aurez besoin de mettre à jour les choses de temps en temps.


Modifier

Le guide du flux d'authentification côté serveur contient un exemple écrit en php. Il s'agit d'un exemple simple qui ne couvre pas tous les scénarios, mais c'est un bon début.

J'ai implémenté ceci en python et en java mais ce n'est pas quelque chose qui peut être facilement partagé puisqu'il s'étend sur plusieurs requêtes et états, et donc je vais juste décrire le flux que je pense que vous devriez utiliser :

  1. À l'intérieur de Facebook, vous allez dans votre application de toile
  2. Facebook créera un POST dans une iframe avec l'URL de votre toile.
  3. Dans les données du poste, vous obtiendrez un demande signée décodez-le et vérifiez s'il a un jeton d'accès, si oui, vérifiez quand il expire. Si tout est bon, enregistrez ce jeton et le processus d'authentification est terminé, sinon.. :
  4. Rediriger l'utilisateur vers le Dialogue oAuth avec votre url de redirection et les permissions dont vous avez besoin.
  5. Après avoir autorisé votre propre application, vous serez redirigé vers votre "recirect_uri" avec le paramètre code (dans la chaîne de requête).
  6. Échangez le code contre un jeton d'accès contre les serveurs de facebook et enregistrez le jeton.
  7. Vous pouvez ensuite vous rediriger vers l'application canvas ou vous arrêter là.

Cela devrait suffire pour obtenir un jeton d'accès de longue durée que vous pourrez ensuite utiliser pendant 60 jours.

Quant à la persistance de vos données fb sur votre propre db, c'est une opération assez triviale pour sauvegarder des données sur un db, et tout dépend des données que vous voulez sauvegarder, comment vous devez les encoder/utiliser (json, xml, texte brut).

Par exemple, disons que vous voulez afficher vos propres photos, après avoir obtenu le jeton (comme décrit ci-dessus), il vous suffit de demander vos photos à votre serveur en envoyant une requête http à : https://graph.facebook.com/me/photos?access_token=XXXXXX . Vous devriez obtenir un résultat codé en json, itérer sur celui-ci et enregistrer chaque image comme un enregistrement dans votre base de données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X