7
votes

iOS Twitter Reverse Oauth

J'ai versé sur Internet pendant des jours pour essayer de déterminer comment implémenter cela.

Je dois demander le jeton d'accès et le secret de Twitter afin de transmettre ceci à un serveur qui traitera les tweets des utilisateurs pour mon application. p>

J'ai suivi ce lien HTTPS: // dev .Twitter.com / Docs / iOS / Utilisation-inverse-auth P>

Le problème est l'étape 1. Ils ne vous donnent pas d'exemple d'étape 1. p>

ici est Mon code: P>

NSURL *url = [NSURL URLWithString:TW_OAUTH_URL_REQUEST_TOKEN];
NSDictionary *parameters = @{TW_X_AUTH_MODE_KEY:TW_X_AUTH_MODE_REVERSE_AUTH};

SLRequest *getTwitterAuth = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodGET URL:url parameters:parameters];


//  Assume that we stored the result of Step 1 into a var 'resultOfStep1'

NSString *S = resultOfStep1;
NSDictionary *step2Params = [[NSMutableDictionary alloc] init];
[step2Params setValue:@"kfLxMJsk7fqIuy8URhleFg" forKey:@"x_reverse_auth_target"];
[step2Params setValue:S forKey:@"x_reverse_auth_parameters"];

NSURL *url2 = [NSURL URLWithString:@"https://api.twitter.com/oauth/access_token"];
SLRequest *stepTwoRequest =
[SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodPOST URL:url2 parameters:step2Params];

//  You *MUST* keep the ACAccountStore alive for as long as you need an ACAccount instance
//  See WWDC 2011 Session 124 for more info.
self.accountStore = [[ACAccountStore alloc] init];

//  We only want to receive Twitter accounts
ACAccountType *twitterType =
[self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];

//  Obtain the user's permission to access the store
[self.accountStore requestAccessToAccountsWithType:twitterType
                             withCompletionHandler:^(BOOL granted, NSError *error) {
     if (!granted) {
         // handle this scenario gracefully
     } else {
         // obtain all the local account instances
         NSArray *accounts =
         [self.accountStore accountsWithAccountType:twitterType];

         // for simplicity, we will choose the first account returned - in your app,
         // you should ensure that the user chooses the correct Twitter account
         // to use with your application.  DO NOT FORGET THIS STEP.
         [stepTwoRequest setAccount:[accounts objectAtIndex:0]];

         // execute the request
         [stepTwoRequest performRequestWithHandler:
          ^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
              NSString *responseStr = 
              [[NSString alloc] initWithData:responseData 
                                    encoding:NSUTF8StringEncoding];

              // see below for an example response
              NSLog(@"The user's info for your server:\n%@", responseStr);
          }];
     } 
 }];


0 commentaires

4 Réponses :


3
votes

La première étape que l'étape, vous n'avez pas de code, c'est qu'ils supposent que vous le ferez sur votre serveur ou avant la main ou quelque chose comme ça. Fondamentalement, vous devez générer une clé que votre application utilisera pour convertir les jetons iOS en jetons normaux.

Il y a un script qui vous demande ici: http: // www.ananseProductions.com/twitter-reverse-auth-adaches/ son écrit en rubis afin que vous puissiez utiliser quelque chose de similaire si vous avez un serveur rubis.

Personnellement, j'aurais une demande d'application de mon jeton de mon serveur, puis apportez la demande à Twitter, puis postez le nouveau jeton de retour sur mon serveur.


0 commentaires

2
votes

Voici une classe pour aider à accomplir cela avec une seule méthode appel qui renvoie un dictionnaire avec le jeton et le secret de jeton.

https://github.com/kbegeman/twitter-reverse-auth << / p>

J'espère que cela aide les autres sortez!


1 commentaires

sa ne fonctionne pas, bien qu'en aller dans le bloc, mais avec une valeur d'identification = "<< version xml" = "\" 1.0 \ "coding = \" utf-8 \ "?> \ n \ n \ n \ n \ n \ n \ n "101 \"> Les informations d'identification d'authentification inverse sont invalides \ n \ n ";



2
votes

A partir de ce code https://github.com/seancook/twreverseAuthexample , c'est assez simple de mettre en œuvre dans votre propre application. Je préfère créer des classes réutilisables, donc je n'ai pas à mettre en œuvre le même code plusieurs fois. Normalement, vous créeriez du singleton et travaillez-y sur le tutoriel suivant. Cependant, le point de cette instruction n'est pas de vous apprendre à créer des singletons, donc pour la simplicité, nous utiliserons appdelegate.h / m code> qui est facilement accessible de toute l'application.

Tout ce que vous avez à faire est ce qui suit: p>

  1. Ouvrez le projet de vous et de Sean Cook (celui de l'URL qui est supérieur à) p> li>

  2. glisser et copie source-> Vendor-> Groupe AboAuthCore dans votre projet P> LI>

  3. Sélectionnez twapimanager.h / m code>, twsignedrequest.h / m code> et copiez-les dans votre projet P> LI>

  4. Ajoutez le code ci-dessous dans votre fichier AppDelegate.h P>

    @property (nonatomique, fort) acaaccountStore * Store; P>

    @property (nonatomique, fort) Twapimanager * apimanager; p>

    @property (nonatomique, fort) nsarray * comptes; p>

    - (vide) StoreacCountwitHAccessToken: (Nstring *) Jeton Secret: (Nstring *) Secret; P>

    - (vide) SpectacleSeauth: (ID) Sender Soutien: (UIView *) ViewTodisplayheet; P>

    - (vide) _refreshToutwitterCounts; p> li>

  5. Collez maintenant les méthodes suivantes dans votre appdelegate.m code> fichier p>

    - (VOID) ActionSheet: (Uiacersheet *) ActionSheet ClickEdButtonAindex: (Nsinteger) BoutonIndex; P>

    - (vide) _refreshTwitterCounts; p>

    - (vide) _ObtainAccessToAbountBlock: (vide (^) (BOOL)) Bloc; P>

    - (void) PerformEverseeauth: (ID) Sender Sender: (UIView *) ViewToDisplayheet; P> Li>

  6. dans une méthode d'initialisation de votre fichier ou à partir de cet exemple dans: `Application: DidfinishlaunchingwithOptions 'Coller le code suivant: P>

    _store = [[ACAccountstore Alloc] init]; p>

    _apimanager = [twapimanager alloc] init]; p>

    [[NSNOTIFICATIONCENTER DEFAULTERCENTER] Addobserver: Sélecteur auto-sélecteur: @Selector (_refreshToutwitterCounts) Nom: AcAccountoredidChangenotification Object: Nil]; P> Li>

  7. N'oubliez pas de supprimer l'observateur à l'aide du code suivant. Coller dans Appdelegate.M Code>: P>

    - (vide) dealloc { p>

    [[NSNotificationCenter defaultCenter] removeObserver:self];
    
  8. Ouvrez votre application app-info.plist code> Fichier et ajouter 2 clés de chaîne. Prenez leurs valeurs de: https://apps.twitter.com/ p>

    twitter_consumer_key p>

    twitter_consumer_secret p> li>

  9. Dans le contrôleur d'affichage que vous souhaitez utiliser pour implémenter les fonctionnalités de Twitter, dans la méthode ViewDidLoad code>, ajoutez le code suivant: p>

    Appdelerate * Appdelegate = [UIAPPLication SharedApplication] .Delegate; P>

    [Appdelegate _refreshTitterCounts]; P> Li>

  10. OK, vous êtes enfin prêt à démarrer la machine entière. Dans le contrôleur d'affichage que vous souhaitez utiliser pour implémenter les fonctionnalités de Twitter, créez uibutton code> appelé _réverseauthbtn code> et créer un ibaction code>. Ensuite, dans votre ibaction code> coller le code suivant: p>

    Appdelerate * Appdelegate = [UIAPPLication SharedApplication] .Delegate; P>

    [Appdelegate SpectacleResterSeauth: Sender Soutien: Self.View]; P> Li> ol>

    whew, je suppose que c'est ça! Si je n'ai pas oublié quoi que ce soit, vous avez de la mise en œuvre de Twitter inverse OAuth, et si vous souhaitez l'utiliser dans plusieurs contrôleurs de vue, tout ce que vous avez à faire est de faire des étapes 1 à 8, puis collez le code des étapes 9 et 10 dans votre contrôleur d'affichage. p>

    meilleures salutations! p> p>


0 commentaires

1
votes

Utilisez cette lib, cela fonctionne parfaitement!

https://github.com/nst/stwitter

Info Comment implémenter: https://github.com/nst/stwitter#Reverse-Authentication

:)


0 commentaires