Отправка запроса изображения на Facebook ( Marmalade C++) не удалась

После нескольких исследований и несколько раз ударившись головой о стену, я почти закончил писать код. Я могу подключиться к Facebook и даже отправлять запросы сообщений, но я не могу отправлять фотографии. Вот код:

            s3eFBRequest* pWallPostRequest = s3eFBRequest_WithGraphPath(MultiLoginScene::getSession(), "me/photos", "POST");
            s3eFBRequest_AddParamString(pWallPostRequest, "picture", MakeScreenshot());
            //s3eFBRequest* pWallPostRequest = s3eFBRequest_WithGraphPath(MultiLoginScene::getSession(), "me/feed", "POST");
            //s3eFBRequest_AddParamString(pWallPostRequest, "message", "Here's a wall post!");
            s3eFBRequest_AddParamString(pWallPostRequest, "access_token", s3eFBSession_AccessToken(MultiLoginScene::getSession()));
            s3eFBRequest_Send(pWallPostRequest, GraphRequestCallback, NULL);

А насчет MakeScreenshot()

static void flipVertical(unsigned char *data, int w, int h)
{
  int x, y, i1, i2;
  unsigned char temp;
  for (x=0;x<w;x++){
    for (y=0;y<h/2;y++){
      i1 = (y*w + x)*3; // this pixel
      i2 = ((h - y - 1)*w + x)*3; // its opposite (across x-axis)

      // swap pixels
      temp = data[i1];
      data[i1] = data[i2];
      data[i2] = temp;

      i1++; i2++;
      temp = data[i1];
      data[i1] = data[i2];
      data[i2] = temp;

      i1++; i2++;
      temp = data[i1];
      data[i1] = data[i2];
      data[i2] = temp;

    }
  }
}

const char* MainMenuScene::MakeScreenshot()
{
  static int count = 0;
  static char file[] = "PicaSim-00000.png";
  sprintf(file, "PicaSim-%05d.png", count++);

 // int w = s3eSurfaceGetInt(S3E_SURFACE_WIDTH);
  //int h = s3eSurfaceGetInt(S3E_SURFACE_HEIGHT);

  int w = 600;
  int h = 600;

  int dataSize = w * h * 3;
  unsigned char *framebuffer = 
    (unsigned char *) malloc(dataSize * sizeof(unsigned char));
  glReadPixels(0, 0, w, h, GL_RGB, GL_UNSIGNED_BYTE, framebuffer);
  flipVertical(framebuffer, w, h);

  /* CIwImage image;
  image.SetFormat(CIwImage::BGR_888);
  image.SetWidth(w);
  image.SetHeight(h);
  image.SetBuffers(framebuffer, dataSize);
  image.SavePng(file);

  free(framebuffer);*/
  return (const char *)framebuffer;
}

В конце концов я получаю неудавшийся ответ от моего обратного вызова... Что я могу делать не так? Мне просто нужно отправить скриншот в Facebook... Есть идеи, почему не работает?

РЕДАКТИРОВАТЬ:

Поэтому я попытался отправить URL-адрес в качестве параметра, но по-прежнему не работает, вот код

s3eFBRequest* pWallPostRequest = s3eFBRequest_WithGraphPath(MultiLoginScene::getSession(), "me/photos", "POST");
            s3eFBRequest_AddParamString(pWallPostRequest, "picture", "http://img1.wikia.nocookie.net/__cb20130407100142/onepiece/pt/images/d/d8/Goku_2.jpg");
            s3eFBRequest_AddParamString(pWallPostRequest, "access_token", s3eFBSession_AccessToken(MultiLoginScene::getSession()));
            s3eFBRequest_Send(pWallPostRequest, GraphRequestCallback, NULL);

Но все еще не работает... какая-либо подсказка?

1 ответ

Вы отправляете буфер кадров в качестве параметра в Facebook!

Facebook принимает только URL изображения в качестве picture параметр. Таким образом, ваше изображение должно быть загружено на веб-сервер, а URL-адрес должен быть в picture параметр, в который вы отправляете буфер кадра.

Другие вопросы по тегам