如何使用 Python 和 Graph API 檢查可發布的 Facebook 頁面

Facebook 的 Graph API 允許開發人員以程式設計方式存取和管理 Facebook 頁面,您可以用它做很多事情,包括發布貼文、獲取受眾洞察、管理廣告等等,而無需訪問 Facebook。雖然有很多方法可以做到這一點,但使用 Python 尤其容易。本指南將向您展示如何使用 Python 和 Meta 中的 Graph API 來取得您可以發布的頁面清單及其 ID。

在開始本指南之前,您需要擁有一個 Facebook 開發者帳戶和一個帶有存取權杖的 Facebook 應用程式。如果您在創建 Facebook 應用程式時需要協助,我們提供了指南,完成後您可以在此處領取。我們還有一個您應該檢查一下,特別是如果您剛開始編程。

首先,您需要安裝 requests 函式庫,它將幫助我們與 Facebook Graph API 互動。

在命令提示字元下執行此命令以儘早安裝該庫:

pip 安裝請求

安裝庫後,我們就可以開始編寫腳本了。我們將解釋程式碼的每個部分,並在最後發布整個內容,以便您可以根據需要將程式碼複製並貼上到記事本中。

提示輸入存取令牌

我們要做的第一件事是編寫一些程式碼來提示使用者輸入存取程式碼。此新增將允許您使用相同的腳本來檢查任何存取權杖:

def get_access_token():

”“”

提示使用者輸入 Facebook 使用者存取權令牌。

”“”

return input("請輸入您的 Facebook 使用者存取權令牌:")

取得您管理的頁面

取得存取權杖後,我們可以使用 /me/accounts Graph API 端點來取得使用者管理的頁面。應用程式建立文件提供了更多此類端點。

def get_pages(access_token):

”“”

使用 Graph API 取得使用者有權存取的頁面清單。

”“”

url =“https://graph.facebook.com/v17.0/me/accounts”

參數 = {

'access_token':access_token

}

# 向 Graph API 發出請求以取得頁面列表

回應 = requests.get(url, params=params)

如果回應.status_code == 200:

頁面=response.json().get('資料',

返回頁面

別的:

print("取得頁面時發生錯誤:",response.status_code,response.text)

返回

檢查發文權限

取得頁面清單後,我們需要檢查使用者是否有權限向每個頁面發佈。我們正在尋找的權限是 CREATE_CONTENT 和 MANAGE,我們將使用以下程式碼來查看哪些頁面擁有這些權限。

def check_pages_with_post_permission(pages):

”“”

透過查看權限來檢查使用者可以發佈到哪些頁面。

”“”

可發布的頁面=

對於頁中的頁:

權限 = page.get('權限',

如果?燙髮或“管理”?在燙髮:

postable_pages.append({

'id': page.get('id'),

“名稱”:page.get(“名稱”)

})

返回 postable_pages

把它們放在一起

在腳本的主要部分,我們組合了所有這些功能。它將提示輸入訪問令牌、獲取頁面、檢查您可以發佈到哪些頁面並顯示結果。當您按 Enter 鍵時,腳本將結束。

def main():

”“”

主要功能是運行腳本。

”“”

# 取得使用者的存取令牌

存取令牌 = get_access_token()

# 取得頁面列表

頁面 = get_pages(access_token)

如果頁面:

print("\n您管理以下頁面:")

對於頁中的頁:

print(f"- {page['name']} (ID: {page['id']})")

# 檢查哪些頁面有權限發帖

postable_pages = check_pages_with_post_permission(頁面)

如果可發布頁面:

print("\n您可以發佈到以下頁面:")

對於 postable_pages 中的頁面:

print(f"- {page['name']} (ID: {page['id']})")

別的:

print("\n您無權在任何列出的頁面上發佈。")

別的:

print("未找到頁面或發生錯誤。")

# 等待使用者按下回車鍵後退出

# 運行主函數

如果 __name__ == "__main__":

主要的()

完整的 Python 腳本

這是完整的腳本,您可以複製並貼上到文字檔案中。如果您隨後使用 .py 副檔名重新命名該檔案 (pagechecker.py),則可以儲存它並雙擊運行它。

導入請求

導入 json

def get_access_token():

”“”

提示使用者輸入 Facebook 使用者存取權令牌。

”“”

return input("請輸入您的 Facebook 使用者存取權令牌:")

def get_pages(access_token):

”“”

使用 Graph API 取得使用者有權存取的頁面清單。

”“”

url =“https://graph.facebook.com/v17.0/me/accounts”

參數 = {

'access_token':access_token

}

# 向 Graph API 發出請求以取得頁面列表

回應 = requests.get(url, params=params)

如果回應.status_code == 200:

頁面=response.json().get('資料',

返回頁面

別的:

print("取得頁面時發生錯誤:",response.status_code,response.text)

返回

def check_pages_with_post_permission(pages):

”“”

透過查看權限來檢查使用者可以發佈到哪些頁面。

”“”

可發布的頁面=

對於頁中的頁:

權限 = page.get('權限',

如果?燙髮或“管理”?在燙髮:

postable_pages.append({

'id': page.get('id'),

“名稱”:page.get(“名稱”)

})

返回 postable_pages

def main():

”“”

主要功能是運行腳本。

”“”

# 取得使用者的存取令牌

存取令牌 = get_access_token()

# 取得頁面列表

頁面 = get_pages(access_token)

如果頁面:

print("\n您管理以下頁面:")

對於頁中的頁:

print(f"- {page['name']} (ID: {page['id']})")

# 檢查哪些頁面有權限發帖

postable_pages = check_pages_with_post_permission(頁面)

如果可發布頁面:

print("\n您可以發佈到以下頁面:")

對於 postable_pages 中的頁面:

print(f"- {page['name']} (ID: {page['id']})")

別的:

print("\n您無權在任何列出的頁面上發佈。")