publicação de fotos no Facebook acaba no lugar erra

Estou tentando postar uma imagem na página do Facebook com o ID = 226338660793052, mas ela continua sendo exibida em / me / photos. O que estou fazendo de errado

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                   imageToSend, @"source",
                                   facebookMessageTextView.text, @"message",
                                   nil];
[facebook requestWithGraphPath:@"/226338660793052/photos" andParams:params andHttpMethod:@"POST" andDelegate:self]; 

Não recebo mensagem de erro. Não recebo nada, exceto que a foto acaba no meu próprio álbum, eu / fotos, e não no álbum de 226338660793052 / photos.

Mas quando eu apenas postar uma mensagem nessa página, eu recebo uma postagem bem-sucedida na linha do tempo da página:

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                   @"http://www.bitsonthego.com", @"link",
                                   @"my profile", @"name",
                                   facebookMessageTextView.text, @"message",
                                   nil];
[facebook requestWithGraphPath:@"/226338660793052/feed" andParams:params andHttpMethod:@"POST" andDelegate:self]; 

O que estou perdendo aqui? Sei que isso deve ser possível, pois posso usar um navegador para fazer upload de uma imagem para a página desejada, como um usuário não administrador aleatório. Eu simplesmente não consigo fazê-lo a partir da API do gráfic

ATUALIZAR

Eu resolvi parte do problema. Você precisa usar o access_token da página de destino. É assim que você consegue:

    NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                   @"access_token",  @"fields",
                                   nil];
    FBRequest *request = [facebook requestWithGraphPath:@"226338660793052" andParams:params andDelegate:self];

Quando você obtém o resultado, adiciona-o à transação acima:

    NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                   image, @"source",
                                  [result objectForKey:@"access_token"], @"access_token",
                                   facebookMessageTextView.text, @"message",
                                   nil];

    FBRequest *request = [facebook requestWithGraphPath:[[result objectForKey:@"id"] stringByAppendingString:@"/photos"] andParams:params andHttpMethod:@"POST" andDelegate:self];

Mas, isso não funcionará porque o Facebook.m substituirá esse novo access_token pelo usuário padrão access_token, então fiz uma alteração no Facebook.m por volta da linha 166, em:

  if ([self isSessionValid]) {
        [params setValue:self.accessToken forKey:@"access_token"];
  }

para

  if ([self isSessionValid]) {
    if ([params valueForKey:@"access_token"] == nil)
        [params setValue:self.accessToken forKey:@"access_token"];
  }

Isso mantém um código de acesso que você especificar como parte dos parâmetros, de ser derrotado pelo Facebook.accessToken. Agora isso publicará a imagem na página em que estou interessado.

No entanto, isso funciona porque eu sou um administrador na página em questão. Outros usuários não poderão postar imagens, e as imagens novamente serão encerradas em seus próprios álbuns, porque a chamada para obter um token de acesso para a página retornará nulo.

De acordo com os documentos do Facebook, se a página for irrestrita, como é esta página, será possível postar uma foto nela:

NOTA

Para conexões que exigem um token de acesso, você pode usar qualquer token de acesso válido se a página for pública e não restrita. As conexões em páginas restritas exigem um token de acesso do usuário e são visíveis apenas para usuários que atendem aos critérios de restrição (por exemplo, idade) definidos na página.

Mencionei que minha página é pública e não é restrita?

okens de Acesso à Página

Para executar as seguintes operações como uma Página, e não o usuário atual, você deve usar o token de acesso da Página, não o token de acesso do usuário comumente usado para ler objetos da API do Graph. Esse token de acesso pode ser recuperado emitindo um HTTP GET para / USER_ID / accounts com a permissão manage_pages. Isso retornará uma lista de páginas (incluindo profilePages do aplicativo) às quais o usuário tem acesso administrativo, juntamente com access_tokens para essas páginas. Como alternativa, você pode obter um token de acesso à página para uma única página específica, emitindo um HTTP GET para / PAGE_ID? Fields = access_token com a permissão manager_pages, conforme descrito acima. A publicação em uma Página também requer a permissão publish_stream, a menos que indicado de outra form

Então, como publicar uma imagem em uma página pública / sem restrições? Posso fazer isso a partir de qualquer navegador, por isso é possível, mas como é feito usando a API do Graph? Como posso postar no feed sem travessuras access_token, que tal publicar uma foto é diferente?

Em resumo, o que estou tentando fazer é postar uma imagem, não apenas um URL em miniatura, em uma página pública / não restrita, usando a API do Grap

questionAnswers(6)

yourAnswerToTheQuestion