0

我在这里为我的 Facebook 应用程序使用这个脚本。
它会在用户的 Facebook 个人资料上上传一张照片,并为该照片创建一个新相册。

该脚本返回“ [APP NAME] Photos ”作为相册名称/标题(不带引号)。
- [APP NAME]是我的 Facebook APP 的名称 -

基本上,我不想要那个专辑标题。我想在脚本上指定专辑标题。
我想要的是:

  • ...能够从脚本中指定要创建的专辑名称/标题。
  • 如果可能,请指定专辑描述。

这是脚本 -

    $root_url = "http://www.WEBSITE.COM/";
    $facebook = new Facebook($config);
    $user_id = $facebook->getUser();

      // Get image from URL
      $img = $_GET['i'];
      // Change location depending on which type of cover
      if($get_set != 1) {
      $photo = './PATH/'.$img.''; // Path to the photo on the local filesystem
      } else {
      $photo = './PATH/'.$img.'';
      }
      $message = 'THIS IS THE PHOTO CAPTION';




        if($user_id) {

          // We have a user ID, so probably a logged in user.
          // If not, we'll get an exception, which we handle below.
          try {

            // Upload to a user's profile. The photo will be in the
            // first album in the profile. You can also upload to
            // a specific album by using /ALBUM_ID as the path 
            $ret_obj = $facebook->api('/me/photos', 'POST', array(
                                             'source' => '@' . $photo,
                                             'message' => $message,
                                             )
                                          );
          //  echo '<pre>Photo ID: ' . $ret_obj['id'] . '</pre>';
          print "<script>window.location = '".$root_url."index.php?cover=uploaded'</script>";

          } catch(FacebookApiException $e) {
            // If the user is logged out, you can have a 
            // user ID even though the access token is invalid.
            // In this case, we'll get an exception, so we'll
            // just ask the user to login again here.
            $login_url = $facebook->getLoginUrl( array(
                           'scope' => 'photo_upload'
                           )); 
            echo '<script> window.location = "' . $login_url . '"; </script>';
            error_log($e->getType());
            error_log($e->getMessage());
          }   

          echo '<br /><a href="' . $facebook->getLogoutUrl() . '">logout</a>';
        } else {

          // No user, print a link for the user to login
          // To upload a photo to a user's wall, we need photo_upload  permission
          // We'll use the current URL as the redirect_uri, so we don't
          // need to specify it here.
          $login_url = $facebook->getLoginUrl( array( 'scope' => 'photo_upload') );
            echo '<script> window.location = "' . $login_url . '"; </script>';
            //echo 'Please <a href="' . $login_url . '">login</a> to continue.';

        }

在这里看到这个,我相信这是可能的。

   $album_name = 'YOUR_ALBUM_NAME';
   $album_description = 'YOUR_ALBUM_DESCRIPTION';

我只是不知道如何在那里工作......
期待解决方案。谢谢你的时间!

4

1 回答 1

1

正如它在Photo 对象的文档中所说:

您可以通过向 Graph API 连接发出带有照片内容和可选描述的 HTTP POST 请求来上传照片:

  • https://graph.facebook.com/USER_ID/photos - 照片将发布到为您的应用创建的相册中。如果您的应用尚不存在,我们会自动为您的应用创建相册。以这种方式上传的所有照片都将添加到同一个相册中。

  • https://graph.facebook.com/ALBUM_ID/photos - 照片将发布到特定的现有相册,由 ALBUM_ID 表示。常规相册的大小限制为 200 张照片。默认应用程序相册的大小限制为 1000 张照片。

您当前正在使用第一个选项,使用第二个选项需要您拥有一个专辑 ID,您首先需要创建它:

您可以通过向具有 publish_stream 权限和以下参数的 PROFILE_ID/albums 发出 HTTP POST 请求来为用户创建专辑
用户对象的专辑连接

问题是当应用程序需要再次上传到相册时,您必须保存此相册 ID 以供用户使用。

于 2012-06-04T12:42:53.803 回答