2017-07-19 1 views
0

Je vais essayer d'être clair dans mon problème. Je souhaite activer le partage Facebook dans mon application rapide (Swift 3). Lorsque l'utilisateur clique sur le lien sur facebook, il devrait être redirigé sur l'application (s'il en a) sur l'app store (s'il est sur iOS et n'a pas d'application) ou un autre site web pour un autre cas.FBSDKShareLinkContent imageUrl obsolète mais le lien de l'application facebook ne provoque pas l'image meta

Facebook est un outil simple à faire: App Liens: https://developers.facebook.com/docs/applinks

Alors je devais juste créer sur mon ios projet une classe FBSDKShareLinkContent et lui donner l'url Applink, un titre, une description et une image :

let content:FBSDKShareLinkContent = FBSDKShareLinkContent() 
content.contentURL = NSURL(string: linkURL) 
content.contentTitle = nsTitle as! String 
content.contentDescription = nsDesc as! String 
content.imageURL = NSURL(string: imageURL) 

Mais Facebook changer c'est moyen de partager du contenu. Les propriétés contentTitle, contentDescription et imageURL sont maintenant en lecture seule et déconseillés:

/** 
     The URL of a picture to attach to this content. 
    - Returns: The network URL of an image 

    @deprecated `imageURL` is deprecated from Graph API 2.9. 
    For more information, see https://developers.facebook.com/docs/apps/changelog#v2_9_deprecations 
    */ 
    @available(*, deprecated, message: "`imageURL` is deprecated from Graph API 2.9") 
    open var imageURL: URL! { get } 

maintenant facebook utilise metas du site contentURL pour montrer l'image, le titre et la description. Le problème est que l'url donnée par lien facebook app Soen ne provite pas de données titre, la description ou l'image, voici le http Reponse:

<html> 
    <head> 
     <title>Mowwgli</title> 
     <meta property="fb:app_id" content="1786124768326289" /> 
     <meta property="al:ios:url" content="mowwgli://" /> 
     <meta property="al:ios:app_name" content="Mowwgli" /> 
     <meta property="al:ios:app_store_id" content="1184953498" /> 
     <meta property="al:web:should_fallback" content="false" /> 
     <meta property="al:web:url" content="http://www.mowwgli.com/" /> 
     <meta http-equiv="refresh" content="0;url=http://www.mowwgli.com/" /> 
    </head> 
</html> 

Ensuite, le partage ne montre aucun titre d'image ou de la description:

rendering of facebook share

+0

J'ai été confronté au même problème. 1 jour avant tout fonctionnait bien, mais les 5-8 dernières heures, je suis confronté au même problème. – Harshadcse

+0

J'ai trouvé la solution sur moi-même, voir la réponse juste en dessous de –

Répondre

0

je me suis trouvé la solution en utilisant ce post: How to implement iOS app link Facebook functionality in swift 3?

Son problème est qu'il a réussi à partager image, titre et description mais pas de lien d'application. Donc, j'ai utilisé ce qu'il a fait et utilisé FBSDKShareOpenGraphContent au lieu de FBSDKShareLinkContent. Le dialogue de partage peut utiliser les deux. Alors mon code est maintenant:

let properties = [ 
     "og:title": nsTitle, 
     "og:description": nDesc, 
     "og:image" : imageURL, 
     "og:url" : linkURL, 
    ] 

    let object : FBSDKShareOpenGraphObject = FBSDKShareOpenGraphObject.init(properties: properties) 

    // Create an action 
    let action : FBSDKShareOpenGraphAction = FBSDKShareOpenGraphAction() 
    action.actionType = "news.publishes" 
    action.setObject(object, forKey: "article") 

    // Create the content 
    let content : FBSDKShareOpenGraphContent = FBSDKShareOpenGraphContent() 
    content.action = action 
    content.previewPropertyName = "article" 

    FBSDKShareDialog.show(from: vc, with: content, delegate: nil) 
+0

J'avais essayé de la même manière, mais je n'ai pas réussi. Je reçois cette erreur "L'opération n'a pas pu être terminée. (Com Facebook, SDK, erreur de partage 2.)". J'utilise le simulateur. une idée à ce sujet? – Harshadcse

+0

Selon l'URL ci-dessous: https://developers.facebook.com/docs/sharing/opengraph/ Les histogrammes Open Graph personnalisés sont obsolètes dans Graph API 2.8. API graphique 2.7 et inférieure soutiendront des histoires de Graphique personnalisés ouverts selon le calendrier suivant: Soutien à la création de nouveaux objets se terminera en Janvier 2017. Soutien à la publication d'objets existants prendra fin Octobre 2017. Cela signifie que ce serait solution temporaire jusqu'en octobre. Existe-t-il un moyen alternatif de fournir un lien externe et de poster avec Photo? – Harshadcse

+0

Seules les histoires de graphes ouverts personnalisées sont obsolètes, et non celles standard. Nous pouvons donc utiliser FBSDKShareOpenGraphContent en toute sécurité. Cependant, je ne peux pas sembler le faire fonctionner en utilisant des actions de nouvelles. Les livres fonctionnent bien mais le livre doit avoir un champ isbn que je ne peux pas fournir. La seule action qui me reste est "og.likes" ... – Bioche