2010-11-17 2 views
4

Lorsqu'un dialogue Facebook est créé avec le code comme celui-ciFacebook dialogue, et fermeture de session jeton d'accès (Facebook iOS SDK)

NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys: apiKey, @"api_key", nil]; 
[facebook dialog:@"stream.publish" andParams:params andDelegate:self]; 

est là la possibilité d'utiliser des sessions?

J'ai réussi à publier un article sur le mur d'un utilisateur, mais comment autoriser l'utilisateur à se déconnecter? En outre, j'obtiens cette erreur lorsque j'essaie d'accéder aux informations utilisateur en cours.

{ 
    error = { 
     message = "An active access token must be used to query information about the current user."; 
     type = OAuthException; 
    }; 
} 

Répondre

3

-je créer l'objet Facebook dans viewDidLoad

_facebook = [[Facebook alloc] init]; 

J'ai un tableView. Lorsque l'utilisateur clique sur une entrée, une feuille d'action apparaît avec 3 choix

1 envoyer un email

2 Partager sur Facebook

3 vous déconnecter de Facebook: il devrait être là que si l'utilisateur est connecté, mais pour le moment, il est là et ça fonctionne. J'utilise

[_facebook logout:self]; 

et de plus la méthode

- (void)fbDidLogout is called. 

Lorsque l'utilisateur clique sur "Partager sur Facebook", ce code est exécuté

SBJSON *jsonWriter = [SBJSON new]; 
NSDictionary *actionLinks = [NSArray arrayWithObjects: 
           [NSDictionary dictionaryWithObjectsAndKeys: 
              @"Some text", @"text", 
             @"http://try.com",@"href", nil], nil]; 

NSString *actionLinksStr = [jsonWriter stringWithObject:actionLinks]; 

NSDictionary* attachment = [NSDictionary dictionaryWithObjectsAndKeys: 
             @"is using...", @"name", 
            @"It's an app….", @"caption", 
            @"Download!", @"description", 
            @"http://ituneslink", @"href", 
            nil]; 

NSString *attachmentStr = [jsonWriter stringWithObject:attachment]; 
NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
             API_KEY, @"api_key", 
             @"Message", @"user_message_prompt", 
             actionLinksStr, @"action_links", 
             attachmentStr, @"attachment",nil]; 

     [_facebook dialog:@"stream.publish" andParams:params andDelegate:self]; 

     [jsonWriter release]; 

En viewDidLoad, j'ai aussi essayé d'utiliser

_facebook.accessToken = [[NSUserDefaults standardUserDefaults] stringForKey:@"AccessToken"]; 
_facebook.expirationDate = (NSDate *) [[NSUserDefaults standardUserDefaults] objectForKey:@"ExpirationDate"]; 

_permissions = [[NSArray arrayWithObjects: @"read_stream", @"offline_access",nil] retain]; 

    if ([_facebook isSessionValid] == NO) { 
     [_facebook authorize:API_KEY permissions:_permissions delegate:self]; 
    } 

mise en fbDidLogin:

[[NSUserDefaults standardUserDefaults] setObject:_facebook.accessToken forKey:@"AccessToken"]; 
[[NSUserDefaults standardUserDefaults] setObject:_facebook.expirationDate forKey:@"ExpirationDate"]; 

mais fbDidLogin est jamais appelé.

EDIT

Je résolus en utilisant l'api octobre FB (alors que je ne l'ai pas trouvé une solution avec le novembre un).

+0

Des idées? Je ne sais pas comment je peux procéder ... – Sefran2

+0

J'ai résolu quelques problèmes avec le FB octobre api – Sefran2

+0

@Fran: Dans ce cas, vous devriez avoir modifié cette information dans la question. Tout ce que vous avez fait plus tard pour «résoudre certains problèmes» aurait dû être affiché comme réponse et accepté. –

0

On dirait que c'est un problème d'autorisations, essayez:

[facebook setPermission:@"offline_access"]; 
+0

Comment est-il possible que le jeton d'accès soit nul? Je l'imprime avec NSLog (@ "% s", facebook.accessToken); et sa valeur est nulle. Je ne peux donc pas récupérer les informations utilisateur actuelles. – Sefran2

+0

Dans NSMutableDictionary * params = [NSMutableDictionary dictionaryWithObjectsAndKeys: apiKey, @ "api_key", nil]; [facebook dialog: @ "stream.publish" etParams: params etDelegate: self]; seule la touche api_key est utilisée. Où ai-je utilisé la clé secrète? – Sefran2

+0

Je réussis à me déconnecter avec [facebook logout: self]; mais comme le accessToken retourne toujours null je ne peux pas non seulement récupérer des informations d'utilisateur, mais aussi utiliser une feuille d'action personnalisée avec l'entrée "Déconnexion de fb" seulement quand il le faut – Sefran2