2013-05-31 10 views
7

मैं अब इसे इंटरनेट पर डालने के लिए इंटरनेट पर डालना चाहता हूं कि इसे कैसे कार्यान्वित किया जाए।आईओएस ट्विटर रिवर्स ओएथ

मुझे उस सर्वर को पास करने के लिए प्रवेश टोकन और ट्विटर से गुप्त अनुरोध करने की आवश्यकता है जो उपयोगकर्ताओं को मेरे आवेदन के लिए ट्वीट्स को संसाधित करेगा।

मैं इस लिंक के माध्यम दिया है https://dev.twitter.com/docs/ios/using-reverse-auth

समस्या चरण 1 वे आप चरण का एक उदाहरण देना न है 1.

यहाँ मेरी कोड है:

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); 
      }]; 
    } 
}]; 

मैं कर दिया गया है यह पता लगाने की कोशिश कर रहा है कि मैं ट्विटर दस्तावेज़ों से चरण 2 तक पहुंचने के लिए एसएलआरक्वेट को कैसे संसाधित करता हूं।

मैं भी इस यहाँ का इस्तेमाल किया है: https://github.com/seancook/TWReverseAuthExample

इस कोड को महान लेकिन बहुत जटिल है। किसी भी तरह की सहायता का स्वागत किया जाएगा! धन्यवाद!

उत्तर

2

यहां एक वर्ग है जो केवल एक विधि कॉल के साथ पूरा करने में मदद करता है जो टोकन और टोकन गुप्त के साथ एक शब्दकोश देता है।

https://github.com/kbegeman/Twitter-Reverse-Auth

आशा इस दूसरों में मदद करता है बाहर!

+2

अपने काम नहीं कर रहा है, हालांकि में जा रहा है, तो ब्लॉक लेकिन क्रेडेंशियल मूल्य के साथ = " \ n \ n <त्रुटि कोड = \" 101 \ "> रिवर्स ऑथ क्रेडेंशियल्स अमान्य हैं \ n \ n"; – Abhishek

+0

मेरे लिए भी काम नहीं कर रहा, एक ही त्रुटि –

3

कारण चरण में कोई कोड नहीं है कि वे मानते हैं कि आप इसे अपने सर्वर पर या हाथ से पहले या ऐसा कुछ करेंगे। असल में आपको एक कुंजी उत्पन्न करने की आवश्यकता है कि आपका ऐप आईओएस टोकन को सामान्य टोकन में बदलने के लिए उपयोग करेगा।

एक ऐसी स्क्रिप्ट है जो आपके लिए यहां अनुरोध करेगी: http://www.ananseproductions.com/twitter-reverse-auth-headaches/ इसकी रूबी में लिखा गया है ताकि आप एक रूबी सर्वर के समान कुछ उपयोग कर सकें।

व्यक्तिगत रूप से मेरा ऐप मेरे सर्वर से इस टोकन का अनुरोध करेगा, फिर ट्विटर पर अनुरोध करें, फिर मेरे टोकन पर नया टोकन पोस्ट करें।

2

इस कोड के रूप में https://github.com/seancook/TWReverseAuthExample, यह आपके अपने आवेदन में लागू करने के लिए काफी सरल है। मैं पुन: प्रयोज्य कक्षाएं बनाना पसंद करता हूं, इसलिए मुझे एक ही कोड को कई बार लागू करने की आवश्यकता नहीं है। आम तौर पर आप कुछ सिंगलटन बनाएंगे और निम्न ट्यूटोरियल पर इसके साथ काम करेंगे। हालांकि इस निर्देश का बिंदु आपको सिंगलटन बनाने का तरीका नहीं सिखाता है, इसलिए सादगी के लिए, हम AppDelegate.h/m का उपयोग करेंगे जो पूरे एप्लिकेशन से आसानी से सुलभ है।

आपको बस इतना करना है निम्नलिखित:

  1. ओपन तुम्हारा और शॉन कुक की परियोजना (एक जो यूआरएल से ऊपर है)

  2. खींचें और कॉपी स्रोत> Vendor-> समूह ABOauthCore अपने प्रोजेक्ट में

  3. का चयन करें TWAPIManager.h/m, TWSignedRequest.h/m करके अपने प्रोजेक्ट में उन्हें कॉपी

  4. नीचे दिए गए कोड को अपने ऐपडिलेगेट में जोड़ें।एच फ़ाइल

    @property (nonatomic, strong) ACAccountStore * store;

    @property (nonatomic, strong) TWAPIManager * apiManager;

    @property (nonatomic, strong) NSArray * खाते;

    - (शून्य) storeAccountWithAccessToken: (एनएसएसटींग *) टोकन गुप्त: (एनएसएसटींग *) गुप्त;

    - (शून्य) प्रदर्शन ReverseAuth: (आईडी) प्रेषक इनव्यू: (UIView *) viewToDisplaySheet;

    - (शून्य) _refreshTwitterAccounts;

  5. अब आप अपने AppDelegate.m फ़ाइल में निम्न विधियों में पेस्ट

    - (शून्य) actionSheet: (UIActionSheet *) actionSheet clickedButtonAtIndex: (NSInteger) buttonIndex;

    - (शून्य) _refreshTwitterAccounts;

    - (शून्य) _obtainAccessToAccountsWithBlock: (शून्य (^) (BOOL)) ब्लॉक;

    - (शून्य) प्रदर्शन ReverseAuth: (आईडी) प्रेषक इनव्यू: (UIView *) viewToDisplaySheet;

  6. आपकी फ़ाइल से कुछ प्रारंभ विधि में, या में इस उदाहरण के रूप में: `आवेदन: didFinishLaunchingWithOptions 'निम्नलिखित कोड पेस्ट करें:

    _store = [[ACAccountStore alloc] init];

    _apiManager = [[TWAPIManager alloc] init];

    [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector (_refreshTwitterAccounts) नाम: ACAccountStoreDidChangeNotification ऑब्जेक्ट: nil];

  7. निम्नलिखित कोड का उपयोग कर पर्यवेक्षक को हटाने के लिए याद रखें। AppDelegate.m में चिपकाएं:

    - (शून्य) dealloc {

    [[NSNotificationCenter defaultCenter] removeObserver:self]; 
    

    }

  8. अपने app-Info.plist फ़ाइल खोलें और 2 स्ट्रिंग कुंजी जोड़ें।

    TWITTER_CONSUMER_SECRET

  9. https://apps.twitter.com/

    TWITTER_CONSUMER_KEY देखें नियंत्रक कि आप चहचहाना सुविधाओं को लागू करने का उपयोग करना चाहते में, viewDidLoad विधि में, निम्न कोड जोड़ें:: से उनके मूल्यों लो

    AppDelegate * appDelegate = [UIAplication साझा अनुप्रयोग] .delegate;

    [एपडिलेगेट _refreshTwitterAccounts];

  10. ठीक है, अंत में आप पूरी मशीन शुरू करने के लिए तैयार हैं।व्यू कंट्रोलर में जिसे आप ट्विटर सुविधाओं को लागू करने के लिए उपयोग करना चाहते हैं, UIButton_reverseAuthBtn नामक बनाएं और IBAction बनाएं। फिर आपके IBAction में निम्न कोड पेस्ट करें:

    AppDelegate * appDelegate = [UIAplplication SharedAplication] .delegate;

    [एपडिलेगेट प्रदर्शन ReverseAuth: प्रेषक इनव्यू: self.view];

Whew, मुझे लगता है कि यह है! अगर मैं कुछ भी नहीं भूल गया हूं, तो आपको ट्विटर रिवर्स ओथ कार्यान्वयन मिला है, और यदि आप इसे एकाधिक व्यू कंट्रोलर में उपयोग करना चाहते हैं, तो आपको केवल 1-8 कदम करना है, और फिर चरण 9 से कोड पेस्ट करें और 10 आपके दृश्य नियंत्रक में।

सर्वश्रेष्ठ संबंध!

संबंधित मुद्दे