2011-06-28 4 views
4

J'ai réussi à intégrer le SDK Facebook iOS dans mon projet avec l'aide de la documentation FB fournie.iOS SDK affichant un lien et affichant une vignette

L'intégration FB de mon application est assez simple: un bouton de partage Facebook, qui permet à un utilisateur d'afficher un lien vers son mur FB avec un commentaire fourni par l'utilisateur. Rien de bouleversant ou de révolutionnaire.

Cependant, je voudrais aller un peu plus loin. Je n'ai pas de vignette à afficher pour le lien (c'est-à-dire ma propre URL d'image), mais j'aimerais que la vignette soit automatiquement sélectionnée par Facebook. Semblable à comment, à partir de Facebook dans un navigateur Web, si vous choisissez de partager un lien de CNN.com, Facebook sélectionnera automatiquement les vignettes pour la page à partager, et vous donnera même la possibilité de cocher la case " Aucune Miniature". Dans la boîte de dialogue iOS pour partager le lien, j'aimerais que la vignette soit automatiquement sélectionnée (vraisemblablement, elle est générée à partir du lien que vous essayez de partager, c'est-à-dire que FB saisit simplement les images de la page).

Est-ce possible? Encore une fois, je ne veux pas afficher "image" avec une URL d'image fournie dans le NSDictionary "pièce jointe" ci-dessous parce que je n'aurai pas l'URL de l'image. Je veux juste afficher un lien hypertexte et que FB affiche le lien sur le mur de l'utilisateur avec son commentaire et que FB fournisse l'image miniature (similaire à ce que l'on ferait si on postait depuis un navigateur web).

Fondamentalement, le code de débordement de la pile est:

SBJSON *jsonWriter = [[SBJSON new] autorelease]; 

NSDictionary* actionLinks = [NSArray arrayWithObjects:[NSDictionary  
dictionaryWithObjectsAndKeys: @"Always Running", @"text", @"http://itsti.me/", @"href", 
nil], nil]; 

NSString *actionLinksStr = [jsonWriter stringWithObject:actionLinks]; 
NSDictionary* attachment = [NSDictionary dictionaryWithObjectsAndKeys: 
          @"a long run", @"name", 
          @"The Facebook Running app", @"caption", 
          @"it is fun", @"description", 
          @"http://itsti.me/", @"href", nil]; 

NSString *attachmentStr = [jsonWriter stringWithObject:attachment]; 
NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
          @"Share on Facebook", @"user_message_prompt", 
          actionLinksStr, @"action_links", 
          attachmentStr, @"attachment", 
          nil]; 

[_facebook dialog:@"stream.publish" andParams:params andDelegate:self]; 

Répondre

1

Une approche différente serait d'appeler l'API graphique au lieu d'utiliser une boîte de dialogue. Donc, si vous faites un POST HTTP à https://graph.facebook.com/me/feed et que vous fournissez les paramètres de message et de lien, l'image doit être automatiquement sélectionnée par Facebook. Voir https://developers.facebook.com/docs/reference/api/user/#links.

Vous devrez générer l'interface utilisateur pour demander à l'utilisateur d'entrer le message. Si cela peut fonctionner pour vous, alors c'est la voie à suivre.

0

Je ne pense pas que vous deviez poster une image. En outre, ce que Facebook fait est d'obtenir des tags Open Graph (balises META au début des documents Web juste à cet effet). Vous devriez être capable de simplement poster un lien et un message, et il va "pelucher" - lire les balises meta et poster l'image, le résumé, etc. pour cette page web.

Vous pouvez essayer d'utiliser des actions de graphe Open Graph à la place des boîtes de dialogue de partage. Il fera plus de ce que vous voulez.http: //developers.facebook.com/docs/opengraph/