我正在开发一个将facebook页面作为其数据源之一的项目.它定期从中导入一些数据,不涉及GUI.然后我们使用Web应用程序显示我们已有的数据.
并非所有信息都是公开的.这意味着我必须访问一次数据然后保留它.但是,我不知道这个过程,我还没有找到一个很好的教程.我想我需要一个access_token,如何从用户那里逐步获得它?用户是Facebook页面的管理员,他是否必须在页面中添加一些我们的FB应用程序?
编辑:谢谢@phwd的提示.我做了一个教程,如何获得永久页面访问令牌,即使offline_access不再存在.
编辑:我刚刚发现它的回答:持久的FB访问令牌服务器拉FB页面信息
我正在为一个促进手语的慈善机构工作,他们希望每天将视频发布到他们的FB页面.视频数量很大(且不断增长),因此他们希望以编程方式安排上传.我真的不介意我最终在做什么编程语言,但是我尝试了以下内容并没有走得太远:
Perl使用WWW::Facebook::API(旧的REST API)
my $res = $client->video->upload(
title => $name,
description => $description,
data => scalar(read_file("videos/split/$name.mp4"))
);
Run Code Online (Sandbox Code Playgroud)
身份验证没问题,这正确地发布了一个facebook.video.upload方法https://api-video.facebook.com/restserver.php.不幸的是,这会返回"方法未知".我认为这与弃用的REST API有关.
Facebook::Graph在Perl或fb_graphRuby中的gem.(OAuth API)
我甚至无法进行身份验证.这两个都面向网络而不是OAuth的桌面应用程序,但我认为我应该能够做到:
my $fb = Facebook::Graph->new(
app_id => "xxx",
secret => "yyy",
postback => "https://www.facebook.com/connect/login_success.html"
);
print $fb->authorize->extend_permissions(qw(publish_stream read_stream))->uri_as_string;
Run Code Online (Sandbox Code Playgroud)
在我的浏览器中转到该URL,捕获code返回的参数,然后
my $r = $fb->request_access_token($code);
Run Code Online (Sandbox Code Playgroud)
不幸:
Could not fetch access token: Bad Request at /Library/Perl/5.16/Facebook/Graph/AccessToken/Response.pm line 26
Run Code Online (Sandbox Code Playgroud)同样在Ruby中,使用fb_graph,
fb_auth = FbGraph::Auth.new(APP_ID, APP_SECRET)
client = fb_auth.client
client.redirect_uri = "https://www.facebook.com/connect/login_success.html" …Run Code Online (Sandbox Code Playgroud)我想使用API将更新发布到我拥有的Facebook页面上。
我按照此答案中的说明进行操作以获得:
我可以使用寿命长的访问令牌将其发布到我的墙上,但是无论是哪一个页面或特定的页面访问令牌都不允许我将其发布到我的页面。
如果我尝试使用个人长期访问令牌发布到我的页面ID,它将返回“确定”和实际的发布ID,但该发布永远不会出现在页面上。
如果我尝试使用页面访问令牌将消息发布到/me/feed(应该是页面)或页面ID上,则会得到#200。用户未授权应用程序执行此操作,而我显然这样做了。
我究竟做错了什么?
我需要提交我的应用程序以供审核吗?当我什至没有“应用程序”时该怎么办?它没有面向公众的网站,也没有,因为它只是我个人使用的一个脚本,我想用它来更新页面。
要使用 Google Apps 脚本在 Instagram 上发布照片,我按照以下步骤操作!
为了生成短期令牌,我访问Graph API Explorer,添加以下范围:
pages_show_list
instagram_basic
instagram_manage_comments
instagram_manage_insights
instagram_content_publish
pages_read_engagement
pages_manage_posts
public_profile
Run Code Online (Sandbox Code Playgroud)
我单击“生成访问令牌”,然后转到“访问令牌调试器”,放置生成的令牌,滚动到页面底部并单击“扩展访问令牌”。
使用这个长期令牌,我将其添加到我的代码中并在我的 Instagram 企业帐户上发布图像:
pages_show_list
instagram_basic
instagram_manage_comments
instagram_manage_insights
instagram_content_publish
pages_read_engagement
pages_manage_posts
public_profile
Run Code Online (Sandbox Code Playgroud)
这样做的问题是,每两个月我就必须返回并再次执行这些手动步骤。
所以我尝试通过直接 url 调用直接生成短期令牌:
https://developers.facebook.com/docs/facebook-login/guides/access-tokens#usertokens
像这样:
function instapost(url_photo,txt_subtitle) {
const access_token = 'XXXXXXXXXXXXX';
const instagram_business_account = '123456789';
const image = url_photo;
const text = txt_subtitle;
var formData = {
'image_url': image,
'caption': text,
'access_token': access_token
};
var options = {
'method' : 'post',
'payload' …Run Code Online (Sandbox Code Playgroud) facebook google-apps-script facebook-graph-api instagram facebook-access-token