Le Facebook SDK iOS obliger l'utilisateur à s'authentifier à chaque fois qu'ils utilisent l'application?
Comme décrit dans le fichier README pour facebook-ios sdk, mes appels app Facebook#autoriser:délégué: avant d'effectuer des appels de l'API.
Cette méthode oblige l'utilisateur à s'authentifier (soit dans le Facebook app ou Safari) et puis des gouttes de contrôle arrière de mon iPhone. Le problème est qu'il demande à l'utilisateur de s'authentifier à chaque fois que j'appel de la méthode. S'ils ont déjà obtenu la permission de mon application, ils reçoivent un message indiquant que l'application est déjà autorisé et qu'ils doivent appuyez sur Ok pour revenir à mon application. Il n'a pas l'air très professionnel.
J'ai donc deux questions:
-
L'utilisateur doit-il toujours avoir autoriser à nouveau afin de faire de Facebook des appels? J'ai toujours pensé que cela permettrait d'économiser le jeton d'accès quelque part, peut-être à l'utilisateur par défaut, de sorte que vous n'avez pas besoin de réautoriser.
-
Si l'utilisateur ne dispose pas d'autoriser à nouveau à chaque fois, est-il un moyen de vérifier si mon application dispose déjà d'une autorisation, de sorte que l'utilisateur n'a pas à voir ce message et appuyez sur la touche Ok?
- Vous devez enregistrer le accessToken et expirationDate vous-même. Vérifier ma réponse pour le code.
Vous devez vous connecter pour publier un commentaire.
Il est regrettable que le Facebook SDK n'est pas automatiquement en chargera pour nous. À part de la construction dans le SDK de vous-même, le plus simple est en tant que tel:
Chaque fois que vous allouer _facebook:
Si vous n'avez jamais enregistré quoi que ce soit dans le NSUserDefaults, puis le néant valeurs seront définies. Rien ne s'est passé. Sinon, des vraies valeurs, seront ensemble, et
[_facebook isSessionValid];
doit retourner TRUE, indiquant de bonnes valeurs. Aller de l'avant et faire de Facebook SDK appels comme si ils sont connectés (ce qu'ils sont). Si la valeur est false, alors l'appelcomme d'habitude.
Alors assurez-vous de prendre en charge Facebook délégué méthode:
J'utilise ce code dans mon application, et il fonctionne parfaitement. Je l'ai fait de mémoire, donc je m'excuse si elle ne fonctionne pas sur le copier-coller. Il y a peut être une faute de frappe quelque part, en plus d'une mauvaise gestion de la mémoire. N'oubliez pas que les jetons d'accès à expiration, à moins que vous obtenir hors de la permission. En tout cas, le code ci-dessus s'occupe de tout.
expirationData
-->expirationDate
La cause de devoir passer par le signe sur le processus à chaque fois est que, après la signature avec succès sur le premier temps, le Facebook SDK ne suffit pas à sauver le jeton d'accès de manière persistante.
Le fait que l'Facebook SDK ne suffit pas à sauver le jeton d'accès ne signifie pas que vous ne pouvez pas le faire vous-même. Le code suivant ilustrates comment sauvegarder/récupérer le jeton d'accès de l'NSUserDefaults.
Lorsque l'utilisateur se connecte, vous obtiendrez un jeton d'accès et une date d'expiration. Enregistrer le jeton d'accès et vous pouvez le réutiliser aussi longtemps que vous n'avez pas frappé à la date d'expiration encore. Le Facebook kit de développement a une méthode pour faire cette vérification: [fbConnect isSessionValid] mais il semble donner de faux positifs parfois, j'ai donc l'utilisateur d'ouvrir une session en cas d'échec d'une demande.
1) Non, j'ai eu à faire
Facebook *fbConnect = [[Facebook alloc] init]; [fbConnect logout:self];
pour obtenir de l'utilisateur de la session loin2) je suppose que vous pourriez appeler la accestoken dans
Facebook.m
pour vérifier queIci est plus réelle approche de @Daniel Amitay réponse:
En-vue-contrôleur avec le bouton connexion pour vous écrire
Dans AppDelegate fichier
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
vous écrivez la suite