2011-07-22 3 views
3

J'utilise le dernier facebook sdk ios dans mon application. Afin de mettre en œuvre l'authentification unique, Facebook dit:Comment mettre en œuvre Single Sign On (SSO) en utilisant facebook ios sdk pour iphone

Modifier la classe principale de AppDelegate de votre application comme suit:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url 

Dans cette méthode, appelez la méthode handleOpenURL de de votre application de l'objet Facebook, en vous assurant de passer dans le paramètre url.

Ma requête est:

  1. Quelle est l'utilisation de la méthode ci-dessus? Pourquoi l'appeler? Si je cache la méthode dans l'application de démonstration de Facebook à condition qu'il me redirige toujours vers la page de connexion encore et encore. Si je découvre cette méthode il me redirige à la déconnexion avec l'option d'autres boutons (qui est juste)

  2. Maintenant que cette méthode est définie dans le dossier ApplicationDelegate.m et nous devons appeler l'objet facebook dedans. Comment puis-je faire référence à l'objet facebook dans cette méthode car mon objet facebook est défini dans une classe de contrôleur de vue qui est 4 fois dans la hiérarchie.

NOTE: J'ai essayé le DemoApp. Je ne comprends pas comment ils se réfèrent à l'objet facebook dans le fichier AppDelegate.m malgré l'objet facebook déclaré dans le fichier ViewController.

Répondre

6

La méthode est utilisée pour déterminer si votre application va gérer l'URL qui lui est transmise. Par exemple, votre application peut gérer un «schéma» d'URL spécifique, puis choisir lors de l'exécution si elle gère l'URL spécifique. Si vous renvoyez NO, il passera à une autre application qui peut également gérer le même schéma d'URL. Bien que, dans le cas du Facebook iOS SDK, votre application soit la seule application à gérer le schéma d'URL. Lorsque vous tentez de vous connecter à Facebook, le SDK transmet des valeurs à l'application Facebook ou au site Web de Facebook et inclut une URL de rappel afin que le processus d'autorisation puisse être terminé. Sans cette méthode dans le délégué de l'application, ce rappel ne fonctionnera pas correctement.

Pour plus d'informations sur oAuth, voir:

http://developers.facebook.com/docs/authentication/

En second lieu, cela est une grande question que tout le SDK Facebook. Cela a à voir avec un problème architectural fondamental. Vous pouvez inclure l'objet Facebook dans votre délégué d'application, puis le référencer dans le contrôleur de vue. C'est la méthode la plus simple. Au sein du contrôleur de vue, vous pouvez simplement effectuer les opérations suivantes:

Facebook *facebook = [(YourAppDelegate *)[UIApplication sharedApplication] delegate] facebook]; 

Cette option est pas toujours idéale, car il rend le délégué de l'application d'un terrain de dumping pour un grand nombre d'instances partagées. Une autre option consiste à faire en sorte que le délégué de l'application transmette l'objet Facebook au contrôleur de vue lorsque vous le créez (le contrôleur de vue possède une propriété pour l'objet Facebook), puis le délégué d'application le transmet au contrôleur init).

MyViewController *vc = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]; 
vc.facebook = self.facebook; 

Il existe également d'autres options pour le partage des instances de classes telles que l'Objection cadre iOS, mais ceux-ci sont un peu plus avancés.