¿Hay un ejemplo de Firebase iOS Simple Login para Twitter?

Estoy teniendo problemas para encontrar una solución a lo siguiente desde el inicio rápido Simple Login iOS:

Dado que es posible que un dispositivo tenga más de una count de Twitter conectada, necesitará proporcionar un bloque que se pueda usar para determinar qué count iniciar session. Reemplace "[yourApp selectUserName: usernames]" a continuación con su propio código para elija de la list de nombres de usuario.

Este es el código que se proporciona:

[authClient loginToTwitterAppWithId:@"YOUR_CONSUMER_KEY" multipleAccountsHandler:^int(NSArray *usernames) { // If you do not wish to authenticate with any of these usernames, return NSNotFound. return [yourApp selectUserName:usernames]; } withCompletionBlock:^(NSError *error, FAUser *user) { if (error != nil) { // There was an error authenticating } else { // We have an authenticated Twitter user } }]; 

¿Sería mejor una UIActionSheet que permita al usuario elegir qué count usar? ¿Cómo se haría eso?

 #import <Twitter/Twitter.h> #import <Accounts/Accounts.h> 

Para iniciar session:

  ACAccountStore *accountStore = [[ACAccountStore alloc] init]; // Create an account type that ensures Twitter accounts are retrieved. ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter]; [accountStore requestAccessToAccountsWithType:accountType options:nil completion:^(BOOL granted, NSError *error) { // Request access from the user to use their Twitter accounts. // [accountStore requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) { //NSLog(@"%@",error); if(granted) { // Get the list of Twitter accounts. NSArray *accountsArray = [accountStore accountsWithAccountType:accountType]; //NSLog(@"%@",accountsArray); twitterAccountsArray=[accountsArray mutableCopy]; if ([twitterAccountsArray count] > 0){ sheet = [[UIActionSheet alloc] initWithTitle:@"Choose an Account" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil]; for (ACAccount *acct in twitterAccountsArray) { [sheet addButtonWithTitle:acct.username]; } } } else{ dispatch_async(dispatch_get_main_queue(), ^{ //NSLog(@"%@",error); if (![error.localizedDescription isEqual:[NSNull null]] &&[error.localizedDescription isEqualToString:@"No access plugin was found that supports the account type com.apple.twitter"]) { } else [Utility showAlertWithString:@"We could not find any Twitter account on the device"]; }); } }]; 

Se abrirá una hoja de acciones que le mostrará la list de counts que tiene su dispositivo.

Para publicar:

Debe haber al less una count de Twitter válida agregada en su dispositivo iPhone.

 if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) { NSString *initialText=@"Text to be posted"; SLComposeViewController *tweetSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; tweetSheet.completionHandler = ^(SLComposeViewControllerResult result) { switch(result) { // This means the user cancelled without sending the Tweet case SLComposeViewControllerResultCancelled:{ } break; case SLComposeViewControllerResultDone:{ } break; } }; [tweetSheet setInitialText:initialText]; if (initialText) { [self presentViewController:tweetSheet animated:YES completion:nil]; } } 

He encontrado un buen ejemplo de cómo hacerlo con el código Awesome Chat . Utiliza una UIActionSheet como lo estaba intentando.

 //------------------------------------------------------------------------------------------------------------------------------------------------- - (IBAction)actionTwitter:(id)sender //------------------------------------------------------------------------------------------------------------------------------------------------- { [ProgressHUD show:@"In progress..." Interaction:NO]; //--------------------------------------------------------------------------------------------------------------------------------------------- selected = 0; //--------------------------------------------------------------------------------------------------------------------------------------------- ACAccountStore *account = [[ACAccountStore alloc] init]; ACAccountType *accountType = [account accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter]; //--------------------------------------------------------------------------------------------------------------------------------------------- [account requestAccessToAccountsWithType:accountType options:nil completion:^(BOOL granted, NSError *error) { if (granted) { accounts = [account accountsWithAccountType:accountType]; //------------------------------------------------------------------------------------------------------------------------------------- if ([accounts count] == 0) [self performSelectorOnMainThread:@selector(showError:) withObject:@"No Twitter account was found" waitUntilDone:NO]; //------------------------------------------------------------------------------------------------------------------------------------- if ([accounts count] == 1) [self performSelectorOnMainThread:@selector(loginTwitter) withObject:nil waitUntilDone:NO]; if ([accounts count] >= 2) [self performSelectorOnMainThread:@selector(selectTwitter) withObject:nil waitUntilDone:NO]; } else [self performSelectorOnMainThread:@selector(showError:) withObject:@"Access to Twitter account was not granted" waitUntilDone:NO]; }]; } //------------------------------------------------------------------------------------------------------------------------------------------------- - (void)selectTwitter //------------------------------------------------------------------------------------------------------------------------------------------------- { UIActionSheet *action = [[UIActionSheet alloc] initWithTitle:@"Choose Twitter account" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil]; //--------------------------------------------------------------------------------------------------------------------------------------------- for (NSInteger i=0; i<[accounts count]; i++) { ACAccount *account = [accounts objectAtIndex:i]; [action addButtonWithTitle:account.username]; } //--------------------------------------------------------------------------------------------------------------------------------------------- [action addButtonWithTitle:@"Cancel"]; action.cancelButtonIndex = accounts.count; [action showInView:self.view]; } //------------------------------------------------------------------------------------------------------------------------------------------------- - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex //------------------------------------------------------------------------------------------------------------------------------------------------- { if (buttonIndex != actionSheet.cancelButtonIndex) { selected = buttonIndex; [self loginTwitter]; } else [ProgressHUD dismiss]; } //------------------------------------------------------------------------------------------------------------------------------------------------- - (void)loginTwitter //------------------------------------------------------------------------------------------------------------------------------------------------- { Firebase *ref = [[Firebase alloc] initWithUrl:FIREBASE]; FirebaseSimpleLogin *authClient = [[FirebaseSimpleLogin alloc] initWithRef:ref]; //--------------------------------------------------------------------------------------------------------------------------------------------- [authClient loginToTwitterAppWithId:TWITTER_KEY multipleAccountsHandler:^int(NSArray *usernames) { return (int) selected; } withCompletionBlock:^(NSError *error, FAUser *user) { if (error == nil) { if (user != nil) [delegate didFinishLogin:ParseUserData(user.thirdPartyUserData)]; [self dismissViewControllerAnimated:YES completion:^{ [ProgressHUD dismiss]; }]; } else { NSString *message = [error.userInfo valueForKey:@"NSLocalizedDescription"]; [self performSelectorOnMainThread:@selector(showError:) withObject:message waitUntilDone:NO]; } }]; }