Facebook Graph API允许开发者与Facebook平台交互,包括发布内容到用户页面。传统上,offline_access
权限允许应用在用户离线时代表用户执行操作,但该权限已被弃用。
在没有offline_access
权限的情况下,要实现离线发布到页面Feed,可以采用以下方法:
这是目前推荐的解决方案:
pages_manage_posts
和pages_read_engagement
权限// 获取长期用户访问令牌
async function getLongLivedUserToken(shortLivedToken, appId, appSecret) {
const response = await fetch(
`https://graph.facebook.com/v12.0/oauth/access_token?grant_type=fb_exchange_token&client_id=${appId}&client_secret=${appSecret}&fb_exchange_token=${shortLivedToken}`
);
const data = await response.json();
return data.access_token; // 60天有效的令牌
}
// 获取页面访问令牌
async function getPageAccessToken(userToken, pageId) {
const response = await fetch(
`https://graph.facebook.com/v12.0/${pageId}?fields=access_token&access_token=${userToken}`
);
const data = await response.json();
return data.access_token; // 无固定过期时间的页面令牌
}
// 使用页面令牌发布到Feed
async function postToPageFeed(pageToken, pageId, message) {
const response = await fetch(
`https://graph.facebook.com/v12.0/${pageId}/feed`,
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
message: message,
access_token: pageToken,
}),
}
);
return response.json();
}
虽然页面访问令牌理论上不会过期,但建议实现以下机制:
pages_manage_posts
权限需要提交Facebook审核如果上述方法不适用,可以考虑:
问题:令牌失效
问题:发布失败
通过以上方法,即使没有offline_access
权限,也能实现可靠的离线发布功能。
没有搜到相关的文章