📜  脸书API |组 2

📅  最后修改于: 2021-10-19 04:43:09             🧑  作者: Mango

先决条件 – Facebook API |组 1

在本文中,我们将讨论 Facebook API for Python Platform 的实现细节。让我们从下载 Facebook 客户端Python。使用以下Python命令下载 Facebook 客户端 –

pip install facebook-sdk 

下载成功后你会看到这样的画面——

现在,让我们从Python的 facebook 模块提供的方法开始。我们将在本文中讨论以下方法——

  1. 获取对象
  2. 获取对象

获取对象:

此方法将信息作为与对象 ID 确定的对象关联的dict返回。

示例#1:

获取有关用户的详细信息(在这种情况下,我们使用“我”参数仅显示我的帐户的详细信息)。
import json
import facebook
  
def main():
    token = "Please replace this line with your access token"
    graph = facebook.GraphAPI(token)
    profile = graph.get_object('me', fields ='first_name, gender, birthday, email') 
     
    # return desired fields
    print(json.dumps(profile, indent = 4))
  
if __name__ == '__main__':
    main()

示例#2:
获取有关页面的详细信息(用户是页面的管理员还是有权管理页面)。在继续之前让我们先看看如何确定页面 ID。请按照以下步骤操作:

  1. 单击右侧的向下箭头并导航到要确定其页面 ID 的页面。
  2. 单击页面名称以转到该页面。
  3. 单击页面个人资料图片下方页面左侧的查看更多选项。点击后,您将看到“关于”选项
  4. 单击“关于”选项。您将看到页面的详细信息。向下滚动到底部,您将找到您的页面 ID。

现在转到Python代码以查找页面的详细信息。

import json
import facebook
  
def main():
    token = "Please replace this line with your access token"
    graph = facebook.GraphAPI(token)
    page = graph.get_object(id ='PAGEID', fields ='about, can_post, category')
  
    # return desired fields
    print(json.dumps(page, indent = 4))
  
if __name__ == '__main__':
    main()

此代码打印有关页面的基本信息(关于),是否允许请求用户在此页面上发布任何内容(can_post)以及页面的类别(类别)。您可以从页面参考中获得完整的字段列表

示例#3:获取有关帖子的详细信息:消息和附件

让我们首先按照以下步骤查找 Facebook 帖子的帖子 ID。

  1. 在任何帖子上,单击用户名下方提到的日期和时间。
  2. 该帖子将在新标签中打开。
  3. 最后一个斜杠(“/”)之后的最后一个数字构成您的帖子 ID。

按照以下步骤查找用户 ID。

  1. 转到您的个人资料页面,然后右键单击您的个人资料图片。选择选项“复制链接地址”
  2. 打开记事本并按 Ctrl+V 或右键单击并选择粘贴选项。
  3. 将粘贴 URL。在“referrer_profile_id”之后最后提到用户ID。
    https://www.facebook.com/photo.php?fbid=913492355516001&set=a.187231114642052&type=3&source=11&referrer_profile_id=100000677755756

用于查找帖子详细信息的代码。

import json
import facebook
  
def main():
    token = "Please replace this line with your access token"
    graph = facebook.GraphAPI(token)
    post = graph.get_object(id ='USERID_POSTID', fields ='message, attachments{description}')
    # return desired fields
    print(json.dumps(post, indent = 4))
  
if __name__ == '__main__':
    main()

您可以从 Post Reference 获得字段的完整列表。

获取对象:

此方法将 Facebook 社交媒体图表中的所有对象作为dict 返回。字段列表中提到的每个 ID 都映射到一个对象。

示例#1:获取两个不同帖子的创建时间。

import json
import facebook
  
def main():
    token = "Please replace this line with your access token"
    graph = facebook.GraphAPI(token)
    post_ids =["USERID_POSTID# 1", "USERID_POSTID# 2"]
    posts = graph.get_objects(ids = post_ids, fields ='created_time')
  
    # print creation time of the two posts.
    print(json.dumps(posts, indent = 4))
  
if __name__ == '__main__':
    main()

示例#2:获取两张不同照片的评论数。

按照以下步骤在 Facebook 上查找照片 ID。

  1. 单击要为其标识照片 ID 的 Facebook 照片。
  2. 找到“照片。 PHP”在网址区域。
  3. 寻找“fbid”,然后是“photo”后面的数字。 PHP”的 URL 部分。
  4. 出现在“fbid”标签和“&”符号之间的数字是照片身份证号码。
import json
import facebook
  
def main():
    token = "Please replace this line with your access token"
    graph = facebook.GraphAPI(token)
    photo_ids =["USERID_PHOTOID# 1", "USERID_PHOTOID# 2"]
    photos = graph.get_objects(ids = photo_ids, fields ='comments.summary(true)')
  
    # print total comment count for each photo
    print(json.dumps(photos, indent = 4))
  
if __name__ == '__main__':
    main()

参考:

  1. https://facebook-sdk.readthedocs.io/en/latest/api.html
  2. https://developers.facebook.com/docs/graph-api/reference