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