Можно ли вообще загрузить изображение в "групповой альбом" после того, как facebook ввел ограничения по безопасности? - PullRequest
0 голосов
/ 04 августа 2020

После всех реализаций я получаю эту ошибку:

(#200) This endpoint is deprecated since the required permission publish_actions is deprecated.

Итак, мой вопрос, кроме публикации изображения на странице, существует ли какой-либо способ загрузить изображения в альбом Facebook ? Если да, то почему эта страница с инструкциями по реализации все еще доступна в Graph-API

Это учетные данные моего небольшого тестового проекта: Разрешение: publish_to_groups Токен доступа: User access token Идентификатор альбома: Photo-album id

И код находится ниже:

index. html:

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="./uploadImageTofacebook/styles.css">
</head>
<body>

<button type="submit" class="smallButton" id="fb-login-btn">Facebook Log In</button>
<button type="submit" class="smallButton" id="fb-logout-btn" onclick="logout()">Facebook Log Out</button>

<div class="container">
    <form class="form" id="myForm">
        <input type="file" accept="image/*" id="categoryIconFileID"><br>
        <button type="submit" class="smallButton">Upload File</button>
    </form>
    <div id="profile"></div>
</div>
<script src="./uploadImageTofacebook/upload.js"> </script>
</body>
</html>

загрузить. js:

window.fbAsyncInit = function() {
  FB.init({
    appId      : '****',
    cookie     : true,
    xfbml      : true,
    version    : 'v7.0'
  });

  FB.getLoginStatus(function(response) {
    statusChangeCallback(response);
  });
};

(function(d, s, id){
   var js, fjs = d.getElementsByTagName(s)[0];
   if (d.getElementById(id)) {return;}
   js = d.createElement(s); js.id = id;
   js.src = "https://connect.facebook.net/en_US/sdk.js";
   fjs.parentNode.insertBefore(js, fjs);
 }(document, 'script', 'facebook-jssdk'));

 function statusChangeCallback(response) {
   if (response.status === 'connected') {
     console.log('Authenticated!');
     setElements(true);
     testAPI();
   } else {
     console.log('Not Authenticated!');
     setElements(false);
   }
 }

 function testAPI() {
   FB.api('/me','GET',{"fields":"id,name"},
     function(response) {
       getWallpaperURL(response);
     }
   );
 }

 function getWallpaperURL(user) {
   console.log(user.name);
 }

 function setElements(isLoggedIn) {
   if (isLoggedIn) {
     document.getElementById("fb-logout-btn").style.display = "block";
     document.getElementById("profile").style.display = "block";
     document.getElementById("fb-login-btn").style.display = "none";
   } else {
     document.getElementById("fb-logout-btn").style.display = "none";
     document.getElementById("profile").style.display = "none";
     document.getElementById("fb-login-btn").style.display = "block";
   }
 }

 function logout() {
   FB.logout(function(response) {
     setElements(false);
   });
 }

 document.getElementById('fb-login-btn').addEventListener('click', function() {
   FB.login((response) => {
     statusChangeCallback(response);
   }, {scope: 'public_profile,user_photos,publish_to_groups', return_scopes: true}); //{scope: 'public_profile,email', return_scopes: true});
 }, false);

const myForm = document.getElementById("myForm");
const categoryIconFile = document.getElementById("categoryIconFileID");

myForm.addEventListener("submit", e => {
  e.preventDefault();

  const fileReader = new FileReader();
  const file = document.getElementById('categoryIconFileID').files[0];

  fileReader.onloadend = async () => {
    const photoData = new Blob([fileReader.result], {type: 'image/png'});
    const formData = new FormData();

    formData.append('access_token', FB.getAuthResponse()['accessToken']);
    formData.append('source', photoData);
    formData.append('message', 'some status message');

    let response = await fetch(`https://graph.facebook.com/621448918508011/photos`, {
      body: formData,
      method: 'post'
    });
    response = await response.json();
    console.log(response);
  };
  fileReader.readAsArrayBuffer(file);
});
...