web-dev-qa-db-ja.com

Facebook Graph API-FacebookページのURLからIDを取得

この質問 を見てきましたが、私が望むものは異なります。

一般的なURLからではなくFacebook IDを取得したい(したがって、「いいね」ボタンがあるかどうかは条件付き)。 Graph APIを使用してFacebookページからFacebook IDを取得します。

Facebookページには、次のようないくつかの形式があることに注意してください。

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

My_page名またはmy_page_IDのいずれかを取得するために正規表現を実行できることは知っていますが、GraphAPIが必要なものをサポートしていることを誰かが知っているのではないかと思っています。

38
Hommer Smith

あなたが説明する最も簡単な解決策は、lastIndexOf( "/")(ほとんどの言語に同等のものがある)を使用して、URLからid/nameを取得することですget "https://graph.facebook.com/" + id

このURLが返すデータには、ID(つまり、6708787004)とユーザー名(つまり、spark)があるため、使用する識別子(lastIndexOfを使用してURLから抽出したもの)に関係なく、同じ結果が得られます。


編集

このコード:

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

両方で同じように機能する必要があります(つまり、同じデータの結果)。

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

そして

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

(明らかにgetGraphDataメソッドを実装する必要があります)。

また、質問の2番目のURLフォームは、少なくとも私のテストからではなく、ページの有効なURLではありません:

期限切れのリンクをクリックしたか、アドレスを誤って入力した可能性があります。一部のWebアドレスでは大文字と小文字が区別されます。

30
Nitzan Tomer

質問への回答は上に掲載されていますが、以下に示す方法はうまく機能します。facebookページのURLでregexを実行する必要はありません。

私はこの方法で答えを得ました

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

any_fb_page_urlは、次のタイプのいずれかです。

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

これも上記の質問にリストされています

このコードは、JSコンソールでテストされています Facebook Developersサイトツール

10
Suraj Palwe

以下のAPIを使用してページIDを取得できます

https://graph.facebook.com/v2.7/smhackapp?fields=id,name,fan_count,picture,is_verified&access_token=access_token&format = json

参照画像

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']);


?>

Thats a PHP IDを取得する方法の例。

5
Alon Carmel

この回答は2019年に更新およびチェックされます。リンクから何も抽出する必要がないため、非常に簡単です。例えば:

  1. https://www.facebook.com/pg/Vaireo-Shop-2138395226250622/about/
  2. https://www.facebook.com/withminta
  3. https://www.facebook.com/2138395226250622

https://graph.facebook.com/?id=link&access_token=xxxxxxxx

応答:{「名前」:「Vaireoショップ」、「id」:「2138395226250622」}

nodeJSの完全な回答:

async function getBusinessFromFBByPageURL(pageURL: string) {
    const accessToken = process.env.fb_app_access_token;
    const graphUrl = `https://graph.facebook.com/?id=${pageURL}? access_token=${accessToken}`;
    const fbGraphResponse = await Axios.get(graphUrl);
1
dang

この回答では、URLの末尾にスラッシュを付けることができることを考慮しています。これは、FacebookイベントページのURLに含まれているようです。

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

リクエストreのモジュールを使用できますpython

コード:

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])

出力:

[*] ID:100001013078780

0
J0KER11