facebook-ios-sdk déconnexion
J'ai vu beaucoup de questions ici sur le Facebook Graph API, mais je n'ai toujours pas trouver une solution pour de simples "login" /"déconnexion" des opérations de l'utiliser. Ressemble le style est à l'origine de plus de confusion que de bénéfices.
Je voudrais savoir si il est possible d'avoir la situation suivante:
- Entrer dans l'application (pas de
accessToken
/expirationDate
créé). - Effectuer un vous connecter en utilisant l'authentification unique, en appelant
authorize:delegate:
méthode (demande d'arrière-plan et que la connexion est faite dans le "global" champ d'application (Facebook App/Mobile Safari), en demandant à l'utilisateur des informations d'identification. - Entrez de nouveau dans l'application (maintenant connecté, les deux
accessToken
etexpirationDate
sont enregistrés àNSUserDefaults
). - Effectuer une déconnexion par l'appel de la
logout:
méthode (maintenant déconnecté, à la foisaccessToken
etexpirationDate
sont retirés deNSUserDefaults
) - De tenter d'effectuer un vous connecter à nouveau, avec exactement les mêmes étapes effectuées dans 2.
Je me rends compte que quand je l'appelle logout:
je n'ai vraiment déconnecter de Facebook (accessToken
est invalidé) à partir de mon Application, et non de la global
champ d'application (Facebook App/Mobile Safari). Dans 5.) lorsque j'essaie de me connecter à nouveau, l'application va à fond et la tentative de connexion est de nouveau dans Facebook App/Mobile Safari comme d'habitude, mais je vais avoir un écran en disant que je suis déjà connecté:
Vous avez déjà autorisé
...
. Appuyez sur "Ok" pour continuer.
Connecté en tant que...
(Pas Vous?).
C'est un comportement étrange pour l'utilisateur qui s'est connecté à mon Application.
Ma question est:
"Puis-je vraiment déconnecter de facebook (je veux dire "mondiale" de l'étendue) de l'intérieur de mon Application? Cela aurait un impact sur les autres applications utilisant le facebook des informations d'identification de trop. Cependant, si je ne peux pas faire ceci, comment puis-je éviter le "comportement étrange" décrire ci-dessus?
Grâce
source d'informationauteur Eduardo Coelho
Vous devez vous connecter pour publier un commentaire.
J'ai peur que la réponse est non, vous ne pouvez pas faire cela.
Votre application se trouve dans un bac à sable, et ne peut pas écrire à l'extérieur, où les cookies sont (pour le navigateur safari mobile) et Facebook paramètres de l'application (dans Facebook les préférences de l'application/les cookies je crois)
Vous ne pouvez avertir votre utilisateur à se déconnecter à l'extérieur de votre app...
...Ou vous pouvez tout simplement pas utiliser facebook api d'authentification unique, mais en application de connexion formulaire, comme je le fais pour d'autres raisons.
Si vous choisissez cette option ce pull request vous pourriez économiser quelques temps 😉
Eduardo,
Je ressens votre douleur! J'ai passé la meilleure partie de la journée à travailler sur cette question. J'ai découvert que lorsque vous utilisez l'authentification unique et de l'appel:
Appelés à partir de votre code:
Facebook API méthode:
Le facebook API ne invalider le jeton d'accès et expirationdate les variables et les tentatives pour supprimer le navigateur Safari mobile cookies, mais pour une raison quelconque, probablement la faute d'Apple, les cookies ne sont pas réellement supprimées. Ainsi, lorsque vous tentez de vous connecter à la prochaine fois que votre mobile Safari de voir le cookie et il dit:
Jusqu'à ce que Facebook trouve un correctif ou Apple corrige cassée API, nous devons contourner l'authentification unique via Safari. Voici les modifications que j'ai apportées à Facebook.m afin de forcer la vieille boîte de dialogue de connexion. Si vous avez utilisé ces changements, ils peuvent ne pas fonctionner éternellement, mais il est je pense qu'ils vont fonctionner pour un temps très long. Aussi pour être sûr que ce collaboré avec les plus récentes facebook API j'ai la dernière mise à jour de ce post (Nov 2011).
Appelés à partir de votre code:
Facebook API méthode:
Si cette aide vous s'il vous plaît taux de ce fil et mon post pour aider les autres à trouver.
gadildafissh
Hii ,
ce n'est pas possible , la raison en est pour l'authentification Unique (SSO) est de ne pas faire de connexion de l'utilisateur à chaque fois, il les déconnexions , au lieu si l'utilisateur se connecte à n'importe qui de FB apps compatibles - il sera utilisé pour vous connecter à nouveau - C'est parce que l'appareil est principalement utilisé par une seule personne dans ce cas, un seul utilisateur peut se connecter à Facebook.
vous ne pouvez pas contrôler n'importe quelle application en dehors de votre application - par Exemple - si u connexion avec Gmail & lorsque vous ouvrez google.com vous pouvez voir votre nom d'utilisateur n'est actuellement connecté qui a SSO,
Dans le nouveau SDK de Facebook, vous pouvez définir le bouton de connexion
loginBehaviour
propriétéCode ci-dessous dans swift ...
Réponse est déjà fait, mais je veux juste clarifier. Peut-être il a sauvé quelqu'un.
Aller à Facebook.m et changer de ligne
à
Il sera la cause de la fenêtre de connexion s'affiche à l'intérieur de l'application. Déconnexion de travail parfait. En d'autres termes, il fonctionnera comme dans les anciennes versions de l'OS.
en plus de kishnan94 réponse. l'objectif de la version c est ;
si vous voulez un modal pour ouvrir et demander de l'facebook des informations d'identification séparément à partir de Safari ou Facebook app, il suffit d'utiliser la dernière facebook sdk et de définir la connexion comportement
cela rendra le processus de fermeture de session plus pratique et moins déroutant pour les utilisateurs sans l'aide de safari ou facebook app comptes.
Il semble que c'est un bug de Facebook SDK. Dans un cas de Facebook app est installé sur l'appareil,
access_token
est renouvelé. En revanche,access_token
etexpirationDate
ne pouvait pas être changé. :((