Facebook graph api 如何在向用户发布照片时创建Instagram类型的消息?

Facebook graph api 如何在向用户发布照片时创建Instagram类型的消息?,facebook-graph-api,facebook-opengraph,Facebook Graph Api,Facebook Opengraph,如果您在Instagram上共享照片,您会在时间轴上的照片上方看到以下消息 “FB用户与Instagram合影。” 我的测试目前只显示: “FB用户3秒前通过AppName” 我的图像邮编是: $args = Array( 'url' => 'http://www.mySiteName.com/imageName.png', 'message' => 'Made on SiteName http://www.mySiteName.com

如果您在Instagram上共享照片,您会在时间轴上的照片上方看到以下消息

“FB用户与Instagram合影。”

我的测试目前只显示:

“FB用户3秒前通过AppName”

我的图像邮编是:

$args = Array(
    'url'           => 'http://www.mySiteName.com/imageName.png',
    'message'       => 'Made on SiteName http://www.mySiteName.com',
);
$post_id = $this->facebook->api("/me/photos", "post", $args);
我想我需要设置OpenGraph操作和对象,我已经这样做了,但是我不确定我是否正确设置了它们或者如何测试它们

我创建了一个动作“Make”和一个对象“Collection”,并尝试了以下操作:

$post_id = $this->facebook->api("/me/Namespace:make", "post", $args);
但是得到错误:

“您试图发布的操作无效,因为它未指定任何引用对象。必须至少指定以下属性之一:集合。”

集合获取代码提供:

 <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# collection: http://ogp.me/ns/collection#">
  <meta property="fb:app_id" content="appId" /> 
  <meta property="og:type"   content="collection" /> 
  <meta property="og:url"    content="Put your own URL to the object here" /> 
  <meta property="og:title"  content="Sample Collection" /> 
  <meta property="og:image"  content="https://s-static.ak.fbcdn.net/images/devsite/attachment_blank.png" /> 
curl 'https://graph.facebook.com/me/nameSpace:make?access_token=TOKEN'

在应用程序控制台中添加OG操作的右侧,会有一个链接,上面写着“获取代码”。这将向您显示需要包含的信息

在您的情况下,您的args中应该有一个参数,它是
collection
,它包含包含照片OG标记的页面的URL

您可以通过单击在应用程序控制台中创建的集合对象旁边的“获取代码”链接找到此标记

更新


OpenGraph的工作原理是向可访问网页的头部添加元标记。您需要将
集合
元添加到某个页面,然后在请求中的
集合
参数中,添加页面的URL。

在应用程序控制台中添加OG操作的右侧将有一个链接,上面写着“获取代码”。这将向您显示需要包含的信息

在您的情况下,您的args中应该有一个参数,它是
collection
,它包含包含照片OG标记的页面的URL

您可以通过单击在应用程序控制台中创建的集合对象旁边的“获取代码”链接找到此标记

更新


OpenGraph的工作原理是向可访问网页的头部添加元标记。您需要将
集合
元添加到某个页面,然后在请求中的
集合
参数中,添加页面的URL。

我已设法使其工作,并在下面发布了生成的帖子、参考URL和Codeigniter代码的图像

Make是我的OpenGraph操作,Collection是我的OpenGraph对象

参考资料:

$userId=$this->facebook->getUser();
//如果用户尚未通过身份验证,则id将为零
如果($userId==0){
//生成登录url
$url=$this->facebook->getLoginUrl(数组('scope'=>'电子邮件、用户照片、朋友照片、发布流');
回声“;
}否则{
//创建注销URL
$logoutUrl=$this->facebook->getLogoutUrl(数组)(
'下一个'=>'http://www.myUrl.com/logout/',
//用户注销后重定向到的URL
));
回声“;
//获取用户的数据
$user=$this->facebook->api('/me');
echo“欢迎”。$user[“name”]。

”; echo(用户详细信息:); 打印(用户); 回声(“

”); //获取用户的权限 $permissions=$this->facebook->api('/me/permissions'); echo(用户权限:); 打印(权限); 回声(“

”); 如果(isset($permissions['data'][0]['publish_stream'])){ 回显“发布许可”; }否则{ $url=$this->facebook->getLoginUrl(数组('scope'=>'电子邮件、用户照片、朋友照片、发布流'); echo“不允许发布:”; 回声“; } //通过OpenGraph集合对象上载 $og_type='collection';//您的Opengraph对象 $og_title=urlencode(“这是我的标题”); $og_description=urlencode('这是我的描述'); $og_image=http://www.myUrl.com/big.png“;//至少480px x 480px $object\u url='1http://www.myUrl.com/fb_object_meta.php?fb:app_id=398917983475605&og:type=“.$og\u type.&og:title=”.$og\u title.&og:description=”.$og\u description.&og:image=”.urlencode($og\u image); //如果需要动态元数据页面的代码,请参阅此URL // http://developers.facebook.com/docs/tutorials/ios-sdk-tutorial/publish-open-graph-story/ $args=数组( “集合”=>$object\u url, “image[0][url]”=>$og_image,//可以上载多个用户gen映像,例如image[1][url] “图像[0][user_generated]”=>“true”, //在myUrl上生成的“消息”=>http://www.myUrl.com“,//这显示在大图片上方 ); 试一试{ $post_id=$this->facebook->api(“/me/myUrl:make”,“post”,“$args”); 打印($post\u id); } 捕获(例外$e) { 印刷品(港币);; } }
我已经设法让它工作起来,并在下面发布了一张生成帖子的图片、参考URL和Codeigniter代码

Make是我的OpenGraph操作,Collection是我的OpenGraph对象

参考资料:

$userId=$this->facebook->getUser();
//如果用户尚未通过身份验证,则id将为零
如果($userId==0){
//生成登录url
$url=$this->facebook->getLoginUrl(数组('scope'=>'电子邮件、用户照片、朋友照片、发布流');
回声“;
}否则{
//创建注销URL
$logoutUrl=$this->facebook->getLogoutUrl(数组)(
'下一个'=>'http://www.myUrl.com/logout/',
//用户注销后重定向到的URL
));
回声“;
//获取用户的数据
$user=$this->facebook->api('/me');
echo“欢迎”。$user[“name”]。

”; echo(用户详细信息:); 打印(用户); 回声(“

”); //获取用户的权限 $permissions=$this->facebook->api('/me/permissions'); echo(用户权限:); 打印(权限); 回声(“

$userId = $this->facebook->getUser(); // If user is not yet authenticated, the id will be zero if($userId == 0){ // Generate a login url $url = $this->facebook->getLoginUrl(array('scope'=>'email,user_photos,friends_photos,publish_stream')); echo "<h2><a href='" . $url . "'>Login</a></h2>"; } else { // Make Logout URL $logoutUrl = $this->facebook->getLogoutUrl(array( 'next' => 'http://www.myUrl.com/logout/', // URL to which to redirect the user after logging out )); echo "<h2><a href='" . $logoutUrl . "'>Logout</a></h2>"; // Get User's data $user = $this->facebook->api('/me'); echo "<p>Welcome <b>" . $user["name"] . '</b></p>'; echo("<p><b>User Details: </b>"); print_r($user); echo("</p>"); // Get user's Permissions $permissions = $this->facebook->api('/me/permissions'); echo("<p><b>User Permissions: </b>"); print_r($permissions); echo("</p>"); if (isset($permissions['data'][0]['publish_stream'])) { echo "<h3>Permission to Post</h3>"; } else { $url = $this->facebook->getLoginUrl(array('scope'=>'email,user_photos,friends_photos,publish_stream')); echo "<h3>NO Permission to Post: "; echo "<a href='" . $url . "'>Get extra permissions</a></h3>"; } // Upload an via OpenGraph Collection Object $og_type = 'collection'; // Your Opengraph Object $og_title = urlencode('This is my Title'); $og_description = urlencode('This is my Description'); $og_image = 'http://www.myUrl.com/big.png'; // At least 480px by 480px $object_url = 'http://www.myUrl.com/fb_object_meta.php?fb:app_id=398917983475605&og:type='.$og_type.'&og:title='.$og_title.'&og:description='.$og_description.'&og:image='.urlencode($og_image); // See this URL if you need the code for the dynamic meta data page // http://developers.facebook.com/docs/tutorials/ios-sdk-tutorial/publish-open-graph-story/ $args = Array( 'collection' => $object_url, 'image[0][url]' => $og_image, // Possible to upload more than one user gen image e.g. image[1][url] 'image[0][user_generated]' => 'true', //'message' => 'Made on myUrl http://www.myUrl.com', // This shows above the large pic ); try { $post_id = $this->facebook->api("/me/myUrl:make", "post", $args); print_r($post_id); } catch (Exception $e) { print_r($e); } }