Recuperer informations de bases utilisateur facebook.

Bonjour, je suis actuellement en train déssayer dà­ntegrer un login facebook dans une appliucation iphone. Je dois pour ca recoder un bouton facebook (et non utiliser celui donne directement par le SDK)



Dans le IBACTION de mon bouton j ai donc fait la chose suivante :


<br />
-(IBAction)fbButtonClickHandler:(id)sender {<br />
	mainDelegate = (AppDelegate*)[[UIApplication sharedApplication]delegate];<br />
  if (mainDelegate.fbSession.isOpen) {<br />
	[mainDelegate.fbSession closeAndClearTokenInformation]; // FB delog<br />
  }<br />
  else {<br />
	if (mainDelegate.fbSession.state &#33;= FBSessionStateCreated) {<br />
		mainDelegate.fbSession = [[FBSession alloc] initWithPermissions:[NSArray arrayWithObjects:@&quot;email&quot;, @&quot;publish_actions&quot;, @&quot;user_birthday&quot;,nil]];<br />
	}<br />
	 // loggin on facebook<br />
	[mainDelegate.fbSession openWithCompletionHandler:^(FBSession *session,<br />
													 FBSessionState status,<br />
													 NSError *error) {<br />
		[fbButton setTitle:[self updateFbButtonLabel] forState:UIControlStateNormal];<br />
		// reading the documentation i&#39;m trying this to get the FBGraphUser<br />
		if(session.isOpen) {<br />
			[FBRequestConnection startForMeWithCompletionHandler:^(FBRequestConnection *connection, id&lt;FBGraphUser&gt; user, NSError *error) {<br />
				  if (&#33;error) {<br />
					NSString *userInfo = @&quot;&quot;;<br />
					// Example: typed access (name)<br />
					// - no special permissions required<br />
					userInfo = [userInfo<br />
								stringByAppendingString:<br />
                                [NSString stringWithFormat:@&quot;Name: %@&#092;n&#092;n&quot;,<br />
								 user.name]];<br />
					// Example: typed access, (birthday)<br />
					// - requires user_birthday permission<br />
					userInfo = [userInfo<br />
								stringByAppendingString:<br />
								[NSString stringWithFormat:@&quot;Birthday: %@&#092;n&#092;n&quot;,<br />
								 user.birthday]];<br />
					// Display the user info<br />
					NSLog(@&quot;%@&quot;, userInfo);<br />
				  }<br />
				  NSLog(@&quot; error: %@&quot; , error);<br />
				}];<br />
		}<br />
	   }<br />
	}];<br />
}<br />
}<br />




La connexion fonctionne bien cependant au moment de recuperer les informations de l utilisateur
<br />
  [FBRequestConnection startForMeWithCompletionHandler:^(FBRequestConnection *connection, id&lt;FBGraphUser&gt; user, NSError *error)<br />


La fonction me retourne une erreur 400 et m affiche les message suivant :
<br />
Error: HTTP status code: 400<br />
FBSDKLog: Response &lt;#1111&gt; &lt;Error&gt;:<br />
The operation couldn't be completed. (com.facebook.sdk error 5.)<br />
(null)<br />
error: Error Domain=com.facebook.sdk Code=5 &quot;The operation couldn't be completed.				  <br />
(com.facebook.sdk error 5.)&quot; UserInfo=0x925f760 {com.facebook.sdk:ParsedJSONResponseKey=<br />
&lt;CFBasicHash 0x9367d60 [0xe41b38]&gt;{type = mutable dict, count = 2,<br />
entries =&gt;<br />
  1 : &lt;CFString 0x1b9410 [0xe41b38]&gt;{contents = &quot;code&quot;} = &lt;CFNumber 0x9366d60 [0xe41b38]&gt;<br />
  {value = +400, type = kCFNumberSInt32Type}<br />
  2 : &lt;CFString 0x1b9340 [0xe41b38]&gt;{contents = &quot;body&quot;} = &lt;CFBasicHash 0x93670b0  <br />
  [0xe41b38]&gt;{type = mutable dict, count = 1,<br />
   entries =&gt;<br />
   11 : &lt;CFString 0x9367c90 [0xe41b38]&gt;{contents = &quot;error&quot;} = &lt;CFBasicHash 0x9366e80  <br />
  [0xe41b38]&gt;{type = mutable dict, count = 3,<br />
   entries =&gt;<br />
2 : &lt;CFString 0x9366850 [0xe41b38]&gt;{contents = &quot;type&quot;} = &lt;CFString 0x9367300<br />
   [0xe41b38]&gt;{contents = &quot;OAuthException&quot;}<br />
	3 : &lt;CFString 0x93672a0 [0xe41b38]&gt;{contents = &quot;message&quot;} = &lt;CFString 0x9367200  <br />
   [0xe41b38]&gt;{contents = &quot;An active access token must be used to query information about		<br />
   the current user.&quot;}<br />
6 : &lt;CFString 0x9367c80 [0xe41b38]&gt;{contents = &quot;code&quot;} = 2500<br />




Je comprends donc que l aconnexion est mal etablie ici, pourtant elle fonctionne correctement sans ce bout de code, je ne comprends donc pas pourquoi elle serait refusee, ai-je rate quelquechose ?



Merci par avance.

Réponses

  • LeChatNoirLeChatNoir Membre, Modérateur
    Faut creuser ça :

    "An active access token must be used to query information about the current user"
  • 'LeChatNoir' a écrit:


    Faut creuser ça :

    "An active access token must be used to query information about the current user"


    Merci pour ta reponse !

    C est par la que je creuse quand je conclus que ma connexion est mal faite, cependant, je verifie avec le isOpen quélle est bien active, d'ou mon incomprehension !
  • Aparemment, la classe FBRequestConnexion utilise une variable de la classe FBSession (FbSession.activeSession)



    Il suffit donc juste de la setter a session ici :
    <br />
    	    [mainDelegate.fbSession openWithCompletionHandler:^(FBSession *session,<br />
    														 FBSessionState status,<br />
    														 NSError *error) {<br />
    		    FBSession.activeSession = session;<br />
    




    Cela fonctionne desormais correctement, je laisse ma reponse pour les futurs dev qui auront le probleme.

    Merci !
  • LeChatNoirLeChatNoir Membre, Modérateur
    Tu vois quand tu veux !

    image/clap.gif' class='bbc_emoticon' alt=' :D ' />
  • 'LeChatNoir' a écrit:


    Tu vois quand tu veux !

    image/clap.gif' class='bbc_emoticon' alt=' :D ' />


    LE probleme est que c est documente nulle part ! Mais a force de tenter, c ést passe. Merci pour tes reponses !
  • LeChatNoirLeChatNoir Membre, Modérateur
    Suis d'accord avec toi... FB reste une nébuleuse pour moi. Signe que je vieilli sans doute...

    A plous
Connectez-vous ou Inscrivez-vous pour répondre.