Tho*_*Dho 2 php facebook facebook-page facebook-graph-api facebook-apps
我希望用户通过网站上的表单在Facebook页面上发布图像.当他们通过本网站的Facebook登录时,他们可以从他们的计算机中选择一张图片.
一旦他们选择了图像,我希望将其发布到用户墙,以及我是其中一个管理员的页面相册中.
我已经为此创建了一个应用程序,但我们似乎找不到让这个应用程序在这个Facebook页面上发布的方法.
我们是否需要在此页面或应用上设置任何权限?
要将图像上传到您是管理员的Facebook页面,您需要执行以下操作:
1.)创建一个Facebook应用程序(通常的方式),确保指定Canvas URL
2.)导航到以页面管理员身份登录的URL,并授予权限(user_photos,manage_pages,offline_access,publish_stream)
https://www.facebook.com/dialog/oauth?
client_id=<application_id>
&redirect_uri=<canvas_url>
&response_type=token
&scope=user_photos,manage_pages,offline_access,publish_stream
Run Code Online (Sandbox Code Playgroud)
3.)当您为应用程序提供所需的权限时,您将被重定向到canvas_url#access_token =*access_token*,例如
http://example.com/#access_token=awe12
Run Code Online (Sandbox Code Playgroud)
4.)然后导航到
https://graph.facebook.com/me/accounts?access_token=<access_token>
Run Code Online (Sandbox Code Playgroud)
(使用来自#3的访问令牌).这将列出您管理的页面; 记下要上传图像的页面的access_token
我不是100%肯定,但我相信使用graph api你只能将图像上传到通过图形api创建的专辑; 即你需要先通过图形api创建一个专辑.这是使用curl的示例代码:
$uri = sprintf(
'https://graph.facebook.com/%1$s/albums?access_token=%2$s',
$page_id,
$access_token
);
$post_fields = array(
'name' => trim( $album_name )
);
$curl = curl_init( $uri );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $curl, CURLOPT_POST, TRUE );
curl_setopt( $curl, CURLOPT_POSTFIELDS, $post_fields );
$raw_data = curl_exec( $curl );
curl_close( $curl );
$data = json_decode( $raw_data, $assoc = TRUE );
Run Code Online (Sandbox Code Playgroud)
在$data上面会包含相册ID,你需要上传一张照片:
// prepare the curl post fields
$batch = sprintf(
'[{"method":"POST", "relative_url":"%1$s/photos", "attached_files":"file1"}]',
$album_id
);
$post_fields = array(
'batch' => $batch,
'access_token' => $access_token,
'file1' => '@' . $image_abs_path
);
$uri = 'https://graph.facebook.com';
$curl = curl_init( $uri );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $curl, CURLOPT_POST, TRUE );
curl_setopt( $curl, CURLOPT_POSTFIELDS, $post_fields );
$raw_data = curl_exec( $curl );
curl_close( $curl );
$data = json_decode( $raw_data, $assoc = TRUE );
Run Code Online (Sandbox Code Playgroud)