facebook criar aplicativo para página para fazer upload de fotos para o álbum de fotos da página

Eu sou completamente novo no desenvolvimento de aplicativos do Facebook, por isso aguarde comigo.

Foi-me convidado a criar uma página do Facebook, com um aplicativo que permitirá que usuários façam upload de fotos para um dos álbuns da página.

Eu consegui criar a página, vamos chamá-la de MyPage . Eu também criei um aplicativo MyApp , e adicionei o aplicativo ao perfil da Página. Agora, quando você visualiza o perfil do MyPage , à esquerda (guias), você já encontrará o MyApp .

MyApp aponta para uma página php na minha conta de hospedagem. Tem um formulário com um campo de arquivo:

 <form action="" enctype="multipart/form-data" method="post">     

e o seguinte código para lidar com o arquivo carregado e supostamente colocado no álbum do MyPage :

 if(count($_FILES)){ $name = ereg_replace(' ', '_', basename($_FILES['fileSelect']['name'])); $uploadFile = "uploads/" . $name; if (move_uploaded_file($_FILES['fileSelect']['tmp_name'], $uploadFile)) { $facebook->setFileUploadSupport(true); $args = array('message' => 'Photo Caption'); $args['image'] = '@' . realpath($uploadFile); $data = $facebook->api('/THE_ALBUM_ID/photos', 'post', $args); //get rid of the original on the main server unlink($uploadFile); } } 

No entanto, quando o botão “Carregar” é enviado, recebo esse erro, mesmo no iframe do MyApp para MyApp :

 Fatal error: Uncaught OAuthException: (#120) Invalid album id thrown in /COMPLETE_PATH/facebook-php-sdk/src/base_facebook.php on line 1033 

Mesmo que o ID do álbum esteja realmente correto e exiba quando eu uso Graph API Explorer ou graph.facebook.com/THE_ALBUM_ID

Por sinal, coloco isso no topo do script:

 require 'facebook-php-sdk/src/facebook.php'; $facebook = new Facebook(array( 'appId' => 'THE_APP_ID', 'secret' => 'THE_APP_SECRET', )); 

o que estou perdendo? Qualquer ajuda será muito apreciada.

A única maneira que eu encontrei fazer upload de fotos para uma página através da API do Facebook está fazendo isso como a página. Para fazer isso, você precisa autenticar como a primeira página. Para fazer isso você precisa:

  1. Autenticar com o usuário que possui a página com a permissão manage_pages .
  2. Solicite as páginas com

    /me/accounts?access_token=YOUR_ACCESS_TOKEN

  3. Encontre o access_token da página correspondente.

  4. Use esse access_token para fazer upload de fotos.

Se você precisar de USUÁRIOS para fazer upload de fotos para a página, você pode obter um token de longa vida com o usuário que possui a página e armazená-la para usar esse token em vez de tokens de usuários para fazer upload de fotos. A foto carregada não aparecerá carregada como usuário, ele aparecerá carregado pela página.

Você pode tentar usar CURL e pressionar o gráfico api direto em vez de usar o SDK. O abaixo funciona para mim. Eu tenho uma function que eu passo em uma variável chamada imagem que é uma matriz de token, arquivo (caminho completo para arquivo) e a identificação do álbum e, em seguida, use o seguinte código.

 $args = array( 'access_token' => $image['token'], 'message' => 'Photo Caption', 'no_story' => 1 ); $args['image'] = '@' . $image['file']; $target_url = "https://graph.facebook.com/".$image['album_id']."/photos"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$target_url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_POSTFIELDS, $args); curl_exec($ch); curl_close($ch); 

Você precisará garantir que você tenha as manage_pages e as permissions manage_pages concedidas ao token que você passar para a chamada.