web-dev-qa-db-fra.com

Facebook Graph API - Obtenir l'identifiant à partir de l'URL de la page Facebook

J'ai vu cette question mais ce que je veux, c'est différent.

Je veux obtenir l'ID Facebook pas à partir d'une URL générale (et donc conditionnelle si elle a le bouton J'aime ou non). Je souhaite obtenir l'ID Facebook à partir d'une page Facebook à l'aide de l'API Graph.

Notez que les pages Facebook peuvent avoir plusieurs formats, tels que:

http://www.facebook.com/my_page_name
http://www.facebook.com/pages/my_page_name
http://www.facebook.com/my_page_ID

Je sais que je pourrais faire des regex pour obtenir le nom my_page ou my_page_ID, mais je me demande si quelqu'un sait si GraphAPI prend en charge ce que je veux.

36
Hommer Smith

Il me semble que la solution la plus simple à ce que vous décrivez consiste simplement à obtenir l'id/nom à partir de l'URL que vous avez en utilisant lastIndexOf ("/") (pour lequel la plupart des langues ont un équivalent), puis obtenez "https://graph.facebook.com/" + id .

Les données renvoyées par cette URL ont l’id (c.-à-d. 6708787004) et le nom d’utilisateur (c.-à-d.: Southpark). Ainsi, quel que soit l'identificateur que vous utilisez (ce que vous extrayez de l'URL à l'aide de lastIndexOf), vous devriez obtenir le même résultat.


Modifier

Ce code:

identifier = url.substring(url.lastIndexOf("/"))
graphUrl = "https://graph.facebook.com/" + identifier
urlJsonData = getGraphData(graphUrl)

Devrait fonctionner le même (c'est le résultat avec les mêmes données) pour les deux:

url = http://www.facebook.com/southpark

Et

url = http://www.facebook.com/6708787004

(vous devrez évidemment implémenter la méthode getGraphData ).

De plus, la deuxième forme d’URL de la question n’est pas valide pour les pages, du moins pas lors de mes tests, j’obtiens:

Vous avez peut-être cliqué sur un lien arrivé à expiration ou mal entré l'adresse. Un peu de web les adresses sont sensibles à la casse.

28
Nitzan Tomer

La réponse à la question est affichée ci-dessus, mais la méthode présentée ci-dessous fonctionne bien. Nous n'avons pas à exécuter la variable regex sur la page facebook.

J'ai eu la réponse par cette méthode

FB.api('/any_fb_page_url', function(response){
  console.log(response);
}); 

any_fb_page_url peut être l'un des types suivants

https://www.facebook.com/my_page_name
https://www.facebook.com/pages/my_page_name
https://www.facebook.com/my_page_ID

Ce sont également énumérés dans la question ci-dessus

Ce code est testé sur la console JS disponible sur Outils du site Facebook des développeurs

10
Suraj Palwe

Vous pouvez obtenir l'identifiant de la page en utilisant l'API ci-dessous 

https://graph.facebook.com/v2.7/smhackapp?fields=id,name,fan_count,picture,is_verified&access_token=code d'accès & format = json

Image de référence

6
Mani
<?php

function getFacebookId($url) {

    $id =  substr(strrchr($url,'/'),1); 

    $json = file_get_contents('http://graph.facebook.com/'.$id);

    $json = json_decode($json);

    return $json->id;

}


echo getFacebookId($_GET['url']);


?>

C’est un exemple PHP de la façon d’obtenir l’ID.

5
Alon Carmel

Cette réponse prend en compte le fait qu'une URL peut se terminer par une barre oblique finale, ce que les pages d'événements Facebook semblent avoir dans leurs URL maintenant.

function getId(url) {
  var path = new URL(url).pathname;
  var parts = path.split('/');

  parts = parts.filter(function(part) {
    return part.length !== 0;
  });

  return parts[parts.length - 1];
}
0
Jon Koops

Vous pouvez utiliser Requests et re Modules dans python

Code: 

import requests,re

profile_url = "https://www.facebook.com/alanwalker97"

idre = re.complie('"entity_id":"([0-9]+)"')

con = requests.get(profile_url).content

id = idre.findall(con)

print("\n[*] ID: "+id[0])

Sortie:

[*] ID: 100001013078780

0
J0KER11