2011-10-08 2 views
0

J'ai développé une application iphone qui nécessite l'adresse email d'un ami facebook. En supposant que votre ami a l'application et a accordé des autorisations pour le courrier électronique et offline_access, je crois qu'il est possible d'utiliser:Comment créer un utilisateur de test facebook dans ios en utilisant le facebook sdk

[facebook requestWithGraphPath:@"FRIEND_ID?fields=id,email" andDelegate:self]; 

pour obtenir leur adresse e-mail. À des fins de test et de soumission à Apple, comment créer au sein d'une application ios un utilisateur de test facebook utilisant le sdk facebook? Facebook permet de créer des utilisateurs de test (http://developers.facebook.com/docs/test_users/), mais je ne comprends pas comment utiliser les informations de ce site Web dans mon application ios en utilisant leur API sdk/graph.

Répondre

0

Ok, j'ai examiné cela aussi, et voici ce que j'ai trouvé.

Selon la documentation, il faut être en mesure de créer un utilisateur de test en faisant appel à l'API graphique comme suit:

NSString *urlString = [NSString stringWithFormat:@"%@/accounts/test-users", kAppId]; 
[facebook requestWithGraphPath:urlString andParams:params andHttpMethod:@"POST" andDelegate:self]; 

params est un NSMutableDictionary contenant une partie ou l'ensemble des paramètres comme indiqué à https://developers.facebook.com/docs/test_users/ .

Cependant, j'ai trouvé que l'API souhaite un jeton d'accès d'application pour créer un utilisateur de test, et la méthode requestWithGraphPath:andParams:andHttpMethod:andDelegate: dans le fichier SDK Facebook.m envoie réellement un jeton d'accès d'utilisateur. Même si vous définissez spécifiquement le jeton d'accès à l'application dans le dictionnaire params, il sera remplacé par le jeton d'accès utilisateur dans cette méthode.

Il semblerait qu'il y ait deux façons de contourner cette situation. Nous pourrions singe avec le Facebook SDK et en tenir compte, ce qui n'est certainement pas recommandé. Ou nous pourrions recourir aux requêtes HTTP standard et prendre les choses en main. Voici comment j'ai géré la deuxième approche.

D'abord nous avons besoin du jeton d'accès d'application, qui peut être récupéré en faisant une demande à: https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=client_credentials.

Nous utilisons le jeton d'accès de l'application retour de cette demande dans notre prochaine demande à: https://graph.facebook.com/APP_ID/accounts/test-users?installed=true&name=FULL_NAME&permissions=read_stream&method=post&access_token=APP_ACCESS_TOKEN

Le format global pour les demandes est le même. Voici à quoi ressemblera toute la requête, en code, pour la deuxième des deux requêtes.

NSString *urlString = @"https://graph.facebook.com/APP_ID/accounts/test-users"; 
NSURL *testUserUrl = [NSURL URLWithString:urlString]; 
NSMutableURLRequest *testUserRequest = [[NSMutableURLRequest alloc] initWithURL:testUserUrl]; 
[testUserRequest setHTTPMethod:@"POST"]; 
[testUserRequest addValue:@"text/plain" forHTTPHeaderField:@"content-type"]; 
NSString *bodyString = @"installed=true&permissions=read_stream&access_token=APP_ACCESS_TOKEN"; 
NSData *bodyData = [bodyString dataUsingEncoding:NSUTF8StringEncoding]; 
[testUserRequest setHTTPBody:bodyData]; 
[[NSURLConnection alloc] initWithRequest:testUserRequest delegate:self]; 
[testUserRequest release]; 

Espérons que cela vous aidera à faire des essais avec les utilisateurs de test.

Questions connexes