跳转到内容

Meta OAuth 登录

Meta (Facebook) 登录基于标准的 OAuth 2.0 协议,允许第三方应用以安全、合规的方式访问 Meta 平台上的用户资产(例如用户的基本资料、电子邮箱、广告账户权限以及受众群体管理等)。本指南将深入拆解 Facebook 手动 OAuth 登录流程的核心阶段,并针对如何调试 Access Token、调用受众群体(Custom Audiences)API 进行详细说明。


在 Meta 登录体系中,主要包含以下核心概念:

  • Client ID & Client Secret:应用在 Meta for Developers 注册时生成的应用编号和应用密钥(Secret 需要严格保密)。
  • Redirect URI:用户授权成功后,Meta 平台重定向回第三方应用的接收端地址。
  • Scope (权限范围):请求用户授权的权限列表(例如 public_profile, email, ads_management, business_management)。
  • Access Token (访问令牌)
    • 短期令牌 (Short-lived Token):通常有 2 小时的有效期,通常直接由前端网页 SDK 或基于 Code 兑换获得。
    • 长期令牌 (Long-lived Token):有效期通常为 60 天。可以通过在后端调用 Meta Graph API,用短期令牌换取,从而允许服务在后台代表用户执行离线操作。

如果无法直接使用 Facebook 官方的 Web 或移动端 SDK,开发者可以通过构造标准的 HTTP 浏览器跳转和 API 调用来完成手动授权:

3.1. 阶段一:引导用户进行授权重定向

Section titled “3.1. 阶段一:引导用户进行授权重定向”

将用户重定向至 Meta 统一的 OAuth 对话框。URL 格式如下:

https://www.facebook.com/v23.0/dialog/oauth?
client_id={app-id}
&redirect_uri={redirect-uri}
&state={state-param}
&scope=email,public_profile

3.2. 阶段二:接收授权码 (Authorization Code)

Section titled “3.2. 阶段二:接收授权码 (Authorization Code)”

用户在 Meta 对话框中确认授权后,Meta 会将浏览器重定向回你的 redirect_uri。你将在 URL 的 Query 参数中获得授权码:

http://your-redirect-uri.com/?code=AQD...#_=_

3.3. 阶段三:使用授权码换取短期 Access Token

Section titled “3.3. 阶段三:使用授权码换取短期 Access Token”

从服务端向 Meta 发起 HTTP GET/POST 请求,用授权码兑换短期令牌:

GET https://graph.facebook.com/v23.0/oauth/access_token?
client_id={app-id}
&redirect_uri={redirect-uri}
&client_secret={app-secret}
&code={code-from-step-two}

响应 JSON 示例

{
"access_token": "EAAJzZ...",
"token_type": "bearer",
"expires_in": 7199
}

3.4. 阶段四:获取或延长为长期 Access Token

Section titled “3.4. 阶段四:获取或延长为长期 Access Token”

在服务器端,你可以通过请求将短期用户 Access Token 兑换为长期 Access Token:

GET https://graph.facebook.com/v23.0/oauth/access_token?
grant_type=fb_exchange_token&
client_id={app-id}&
client_secret={app-secret}&
fb_exchange_token={short-lived-token}

4. 广告营销 API 实践:自定义受众

Section titled “4. 广告营销 API 实践:自定义受众”

当获取了具备 ads_managementads_read 权限的 Access Token 后,可以结合 Meta Marketing API 来创建和管理自定义受众(Custom Audiences)。

4.1. Python 代码调用示例 (Business SDK)

Section titled “4.1. Python 代码调用示例 (Business SDK)”

以下展示如何使用 Meta 官方 Python Business SDK 创建一个受众群体的基本片段:

import os
from facebook_business.api import FacebookAdsApi
from facebook_business.adobjects.adaccount import AdAccount
from facebook_business.adobjects.customaudience import CustomAudience
# 1. 初始化 API
access_token = '[Access Token已脱敏]' # 替换为你获取到的长期有效 Token
app_secret = '[App Secret已脱敏]'
app_id = '[App ID已脱敏]'
FacebookAdsApi.init(app_id, app_secret, access_token)
# 2. 初始化广告账户对象
ad_account_id = 'act_1234567890' # 替换为你的实际广告账户 ID
account = AdAccount(ad_account_id)
# 3. 创建自定义受众
params = {
'name': 'My New Custom Audience',
'subtype': 'CUSTOM',
'description': 'Audience created via Python SDK',
'customer_file_source': 'USER_PROVIDED_ONLY',
}
audience = account.create_custom_audience(params=params)
print(f"Created Custom Audience with ID: {audience['id']}")

  • 授权文档:Facebook 手动集成登录流程(Manual Flow)的官方开发者指南。
  • API 官方测试工具:Graph API Explorer,可在线编写与测试所有的 Graph API 请求。
  • 全选验证工具:Access Token Debugger,用于解密令牌结构、查看有效期、拥有权限、授权应用等信息。
  • 受众群体 API:官方 Marketing API 开发文档,涵盖基于 customer file 创建自定义受众的方法。
  • facebook 开源仓库:Facebook Python Business SDK 官方示例源码,展示受众群体的创建与维护。