我设计了社交 Facebook 登录页面,但我无法连接到我的 Facebook 页面以在 django 中发布 Facebook 页面。
我设计了社交Facebook登录和带有单独网页的Facebook页面,我还设计了一个Facebook页面帖子表单。
我所期待的,我会用Facebook页面表单发布在我的Facebook页面上,所以首先我选择我的Facebook页面,然后我在我的Facebook页面表单中输入我的帖子以发送我所期待的Facebook页面。
要在用户使用 Django 中的 Facebook 登录功能登录后连接到 Facebook 页面,您需要使用 Facebook Graph API。以下是您可以遵循的步骤概述:
获取访问令牌:用户使用 Facebook 登录后,您将收到访问令牌。需要此令牌才能代表用户进行 API 调用。
请求
manage_pages
权限:为了管理用户的 Facebook 页面,您需要 manage_pages
权限。请确保在 Facebook 登录过程中请求用户授权时包含此权限。
获取用户页面:使用获取的access token调用Graph API,获取用户管理的页面列表。您可以向
/me/accounts
端点发出 GET 请求以获取与用户关联的页面列表。
向用户显示页面选择:获得页面列表后,您可以将其呈现给用户并允许他们选择所需的页面。
存储所选页面:用户选择页面后,将页面 ID 或任何相关信息存储在 Django 应用程序的数据库或会话中,以便您可以将其与将来的帖子相关联。
发布到所选页面:使用所选页面 ID 和用户的访问令牌,您可以进行 API 调用以将内容发布到所选 Facebook 页面。您可以使用
/page-id/feed
端点在页面的 feed 上创建新帖子。
请记住根据需要处理访问令牌过期并刷新令牌,以确保持续访问用户的页面。
以下示例说明了如何使用 Facebook Graph API 实现前面在 Django 中描述的步骤:
import requests
def get_user_pages(access_token):
url = 'https://graph.facebook.com/v12.0/me/accounts'
params = {
'access_token': access_token
}
response = requests.get(url, params=params)
data = response.json()
if 'data' in data:
return data['data']
else:
return []
def post_to_page(page_id, access_token, message):
url = f'https://graph.facebook.com/v12.0/{page_id}/feed'
params = {
'access_token': access_token,
'message': message
}
response = requests.post(url, params=params)
return response.json()
# Example view for page selection
def choose_page(request):
# Assuming you have the user's access token stored in the session
access_token = request.session.get('access_token')
pages = get_user_pages(access_token)
return render(request, 'choose_page.html', {'pages': pages})
# Example view for posting to the selected page
def post_to_selected_page(request):
if request.method == 'POST':
page_id = request.POST.get('page_id')
message = request.POST.get('message')
# Assuming you have the user's access token stored in the session
access_token = request.session.get('access_token')
response = post_to_page(page_id, access_token, message)
# Handle the response and show success or error message to the user
return redirect('success_page')
else:
# Handle GET request or show an error message
return redirect('error_page')
在此示例中, get_user_pages 函数使用 me/accounts 端点检索用户管理的页面列表。 post_to_page 函数向 /page-id/feed 端点发出 POST 请求,以在所选页面的 feed 上创建新帖子。
Choose_page 视图向用户显示页面列表,允许他们选择所需的页面。 post_to_selected_page 视图处理表单提交并调用 post_to_page 函数将消息发布到所选页面。
请记住将占位符 URL ('https://graph.facebook.com/v12.0/') 替换为适当的 Facebook Graph API 版本,并根据您的 Django 项目的结构进行必要的调整。
请注意,这是一个简化的示例,您可能需要处理错误情况、实施访问令牌管理,并根据您的具体要求执行额外的验证。