2009-09-11 5 views
0

J'utilise http://github.com/bengottlieb/Twitter-OAuth-iPhone/tree/master pour Twitter + Oauth dans mon application iPhone. J'essaie de créer une connexion facebook comme fonctionnalité où vous pouvez vous connecter et se déconnecter de Twitter. Cette implémentation paticulaire de Twitter + Oauth n'utilise pas de sessions, donc je ne suis pas sûr de comment cela fonctionne.Twitter + Oauth sur iPhone: Comment vous déconnectez-vous?

Est-ce que quelqu'un a de l'expérience avec cela et si oui, comment pourrais-je me déconnecter?

Répondre

1

j'ai pu simuler une déconnexion avec le code suivant:

- (IBAction)logoutOfTwitter:(id)sender { 
    [oauthEngine release]; 
    oauthEngine = nil; 
    [[NSUserDefaults standardUserDefaults] setObject:@"" forKey: @"authData"]; 
} 
0

Cela fonctionne aussi:

[oauthEngine clearAccessToken]; 
+0

Est-ce que cela efface la connexion de l'utilisateur? Si c'est le cas, c'est beaucoup plus propre! –

1

Merci beaucoup @Justin Gallagher!

J'ai cherché partout la réponse à cela et effectivement vu votre réponse il y a un certain temps, mais ne pense pas qu'il y avait quelque chose là-dedans, je ne l'avais pas essayé.

je jette toutes les suggestions à, et la réponse finale semble être une combinaison de la vôtre et celle ici: github_bengottlieb_Twitter-OAuth-iPhone_issues_41

Ce que je ne faisais pas déjà (que vous suggérez) était:

oauthEngine = nil; 
[[NSUserDefaults standardUserDefaults] setObject:@"" forKey: @"authData"]; 

Ou dans mon cas:

_engine = nil; 

Cela provoque le contrôleur de vue twitter à nouveau pop-up, mais sans le nom d'utilisateur & passwor d invites - donc juste autoriser et refuser les boutons.

Si vous le voulez pour vous déconnecter complètement et par conséquent demander à l'utilisateur de nouvelles informations d'identification la prochaine fois (sans redémarrer l'application), vous devez définir:

_clearsCookies = YES; 

Dans la classe MGTwitterEngine.

Merci encore!

1

Faire fermeture de session, vous devez prendre soin de plusieurs choses comme

  1. effacer les cookies,
  2. clair jeton d'accès
  3. également supprimer les objets de NSUserDefaults
  4. enfin libérer l'objet .

Sinon, cela va créer des problèmes & même l'application obtiendrait plantage lors de vous essayer de relogin & il peut stocker votre jeton d'accès. On ne pourrait pas se connecter avec un nouveau nom d'utilisateur & password.So c'est la partie obligatoire dont on a besoin pour s'en occuper lors de la déconnexion.

- (IBAction)logoutOfTwitter:(id)sender 
    { 
     [_engine clearAccessToken]; 
     [_engine clearsCookies]; 
     [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"authData"]; 
     [[NSUserDefaults standardUserDefaults]removeObjectForKey:@"authName"]; 

     NSLog(@"%@",[[NSUserDefaults standardUserDefaults]valueForKey:@"authName"]); 
     NSLog(@"%@",[[NSUserDefaults standardUserDefaults]valueForKey:@"authData"]); 

      [_engine release]; 
      _engine=nil; 
    } 

Espérons maintenant que ce sera très clair. Essayez-le.

6

Vous devez effacer cookies du nom d'utilisateur du magasin du navigateur Bcz et mot de passe dans les cookies.

Voici le bon code pour LogOut sur Twitter.

-(IBAction) onLogOutClick:(id)sender 
{ 


[_engine clearAccessToken]; 
[_engine clearsCookies]; 
[_engine setClearsCookies:YES]; 
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"authData"]; 
[[NSUserDefaults standardUserDefaults]removeObjectForKey:@"authName"]; 
NSLog(@"%@",[[NSUserDefaults standardUserDefaults]valueForKey:@"authName"]); 
NSLog(@"%@",[[NSUserDefaults standardUserDefaults]valueForKey:@"authData"]); 

[_engine release]; 
_engine=nil; 

NSHTTPCookie *cookie; 
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 
for (cookie in [storage cookies]) 
{ 
    NSString* domainName = [cookie domain]; 
    NSRange domainRange = [domainName rangeOfString:@"twitter"]; 
    if(domainRange.length > 0) 
    { 
     [storage deleteCookie:cookie]; 
    } 
} 

} 
+0

super génial. – ICoder

0

- (IBAction) logoutTwitter: (id) sender {

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"authData"]; 
[[NSUserDefaults standardUserDefaults]removeObjectForKey:@"authName"]; 

_engine = [[SA_OAuthTwitterEngine alloc] initOAuthWithDelegate: self]; 
_engine.consumerKey = @"consumerKey"; 
_engine.consumerSecret = @"consumerSecret"; 

[_engine clearAccessToken]; 
//[_engine clearsCookies]; 
[_engine release]; 
_engine = nil; 

[[NSUserDefaults standardUserDefaults] setObject:@"" forKey: @"authData"]; 

NSHTTPCookie *cookie; 
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 
for (cookie in [storage cookies]) 
{ 
    NSString* domainName = [cookie domain]; 
    NSRange domainRange = [domainName rangeOfString:@"twitter"]; 
    if(domainRange.length > 0) 
    { 
     [storage deleteCookie:cookie]; 
    } 
} 


[self.navigationController popViewControllerAnimated:YES]; 

}

Ce code signera sur twitter avec succès.

Questions connexes