दिलचस्प पोस्ट
WCF सेवा बनाने के लिए WSDL फ़ाइल का उपयोग कैसे करें (कॉल नहीं करें) एंड्रॉइड स्टूडियो ग्रैडल आइकन त्रुटि, मैनिफेस्ट विलय JDBC और MySQL के साथ एक "संचार लिंक विफलता" सुलझाना जावा: क्यों NullPointer अपवाद NullReferenceExceptions बुलाया नहीं कर रहे हैं? Android में स्क्रीनशॉट कैसे प्रोग्राम करना है? आईआई 6 + IE7 ओवरफ़्लो में सीएसएस समस्या: छिपा हुआ; – स्थिति: रिश्तेदार; कॉम्बो मूल एक्सेस प्रमाणीकरण के साथ जेसूप कनेक्शन फाइल अपलोड करने के लिए fileReader.readAsBinaryString कांगारू में "नियंत्रक के रूप में" का क्या लाभ है? ASP.NET में उपयोगकर्ता के क्लाइंट आईपी पते को कैसे प्राप्त करें? कैसे mysql में levenshtein समारोह जोड़ने के लिए? डुप्लिकेट फ़ाइलों को ढूँढना और उन्हें निकालना लॉलीपॉप में कैलेंडर विज़ुअलाइज़ किए बिना दिनांकपिकर संवाद? सीएसएस मीडिया क्वेरीज़ (स्क्रॉलबार) के साथ जारी करें सी गेटलाइन () – कैसे बफर के साथ निपटने के लिए / कैसे सरणी में मूल्यों की अज्ञात संख्या को पढ़ने के लिए

फेसबुक एसडीके 3.1 – प्रवेश टोकन को मान्य करने में त्रुटि

मैं अपने ऐप को नए फेसबुक एसडीके 3.1 (iOS6 प्रमाणीकरण के लिए समर्थन के साथ) में परिवर्तित करने की कोशिश कर रहा हूं।

मैं इसे ठीक काम कर रहा था, इसलिए मैंने फिर से एफबी वेबसाइट पर अधिकृत क्षुधा की मेरी सूची से एप को हटाने का फैसला किया ताकि यह परीक्षण किया जा सके कि आईओएस फिर से अनुमति की मांग करेगा।

अब मेरी पहली कॉल [FBRequest requestForMe] इस त्रुटि का कारण बनती है:

उत्तर:

 { "error": { "message": "Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.", "type":"OAuthException", "code":190, "error_subcode":460 } } 

कुछ विवरण:

मैं इस प्रकार सत्र खोलने की कोशिश कर रहा हूं:

  [FBSession openActiveSessionWithReadPermissions:nil allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState state, NSError *error) { switch (state) { case FBSessionStateOpen: [self presentPostOptions]; break; case FBSessionStateClosed: case FBSessionStateClosedLoginFailed: [FBSession.activeSession closeAndClearTokenInformation]; break; default: break; } 

फिर मुझे राज्य में वापस बुलाया जाता है FBSessionStateOpen (इस बिंदु पर आईओएस एक अनुरोध संवाद प्रस्तुत नहीं किया है, क्या यह अपेक्षित है)? फेसबुक यह लॉग करता है:

 2012-09-26 13:43:43.768 MyApp[2177:907] FBSDKLog: FBSession INVALID transition from FBSessionStateCreated to FBSessionStateClosed 2012-09-26 13:43:43.769 MyApp[2177:907] FBSDKLog: FBSession transition from FBSessionStateCreated to FBSessionStateCreatedOpening 2012-09-26 13:43:43.837 MyApp[2177:907] FBSDKLog: FBSession transition from FBSessionStateCreatedOpening to FBSessionStateOpen 

सत्र खुला होने के बाद, वर्तमान में पोस्ट ऑप्शन मैं यह करता हूं:

 - (void)presentPostOptions { [[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) { if (!error) { self.usersName = user.name; self.usersID = user.id; [self getPages]; } else { [self didFailWithError:error]; } }]; } 

उपरोक्त समापन ब्लॉक से पहले वापस बुलाया जाता है, मेरे मुख्य राज्य हैंडलर ब्लॉक को एक FBSessionStateClosed स्थिति के साथ कहा जाता है। इस बीच, फेसबुक एसडीके ने उपरोक्त त्रुटि को लॉग किया है।

मुझे सिस्टम रीसेट करने का कोई तरीका नहीं मिल सकता है; और न ही मैं वास्तव में कारण समझता हूँ

क्या कोई कृपया कुछ प्रकाश डालें?

वेब के समाधान से एकत्रित समाधान "फेसबुक एसडीके 3.1 – प्रवेश टोकन को मान्य करने में त्रुटि"

डिवाइस पर फेसबुक अकाउंट सर्वर के साथ-साथ ऐप के / एसडीके के कैश के साथ आउट-ऑफ-सिंक हो गया है। इसे ACAccountStore विधि को नवीनीकृत क्रेडिट कार्ड के लिए फोन करके हल किया जा सकता है, जो टोकन राज्य की ओएस की समझ को अपडेट करेगा।

एसडीके के अगले अपडेट में, एसडीके इस एपीआई को स्वचालित रूप से कॉल करेगा जब उसे सर्वर से प्रतिक्रिया मिलने पर संकेत मिलता है कि टोकन अवैध हो गया है एसडीके की 3.1.0 संशोधन के लिए, एप्लिकेशन को इस एपीआई को स्पष्ट रूप से कॉल करना होगा। यहां एक कोड नमूना है:

 ACAccountStore *accountStore; ACAccountType *accountTypeFB; if ((accountStore = [[ACAccountStore alloc] init]) && (accountTypeFB = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook] ) ){ NSArray *fbAccounts = [accountStore accountsWithAccountType:accountTypeFB]; id account; if (fbAccounts && [fbAccounts count] > 0 && (account = [fbAccounts objectAtIndex:0])){ [accountStore renewCredentialsForAccount:account completion:^(ACAccountCredentialRenewResult renewResult, NSError *error) { //we don't actually need to inspect renewResult or error. if (error){ } }]; } } 

एपीआई कॉल करने के लिए कहां / कब के लिए कई विकल्प हैं सबसे सरल स्थान अवसरों के लिए आवेदन लांच, या दृश्य भार पर कॉल करने के लिए अवसर होगा। इस दृष्टिकोण के साथ एक समस्या यह है कि यह एक नेटवर्क राउंड ट्रिप का कारण होगा जो अक्सर अनावश्यक है एक अन्य विकल्प यह कॉल करने के लिए होता है जब एक सत्र परिवर्तन अधिसूचना होती है, यह दर्शाता है कि एक सत्र बंद हो गया है। इसके अलावा कई एप्लिकेशन कुछ मूलभूत जानकारी जैसे ग्राफ .facebook.com/me, एप्लिकेशन लॉन्च समय पर प्राप्त करते हैं, और यदि ऐसा है – त्रुटि प्रतिक्रिया के मामले में इस पद्धति को एक कॉल करने के लिए आईओएस को इसके टोकन को अपडेट करने के लिए एक उचित स्थान हो सकता है स्थिति।

उम्मीद है कि यह मदद करता है!

मैं सिर्फ 3 घंटे बर्बाद करने के कारण मुझे यह जांचने के लिए एक और बात का योगदान करने जा रहा हूं: सुनिश्चित करें कि आपकी एफबी ऐप सेटिंग में 'सैंडबॉक्स' विकल्प नहीं है, अगर आप एक गैर-ऐप डेवलपर एफबी उपयोगकर्ता के साथ लॉगिन करने का प्रयास कर रहे हैं … शायद स्पष्ट है, लेकिन उम्मीद है कि कुछ घंटों तक दूसरों को बचा सकता है

यदि आपने पहले से ही नहीं किया है, तो अपने ऐप बंडल आईडी को अपने फेसबुक एप के सेटिंग्स पैनल में जोड़ने का प्रयास करें जैसा कि यहां बताया गया है ।

उम्मीद है की यह मदद करेगा।

 [FBSession openActiveSessionWithReadPermissions:nil allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState state, NSError *error) { switch (state) { case FBSessionStateOpen: [self presentPostOptions]; break; case FBSessionStateClosed: case FBSessionStateClosedLoginFailed: [FBSession.activeSession closeAndClearTokenInformation]; break; default: break; } }]; 

मुझे पूरा यकीन है कि यह एक फेसबुक आईओएस एसडीके बग है (3.1.1 पर भी) और मैंने इस बग रिपोर्ट को दायर किया है।

अपने नमूना एप्लिकेशन को शानदार बनाने के द्वारा इस बग को पुन: उत्पन्न करने का प्रयास करते हुए, मैंने पाया है कि यदि आप openActiveSessionWithReadPermissions का उपयोग कर रहे हैं, तो यह आपको सफलतापूर्वक पुन: प्राधिकृत करने की अनुमति देता है। हालांकि, अगर आप openActiveSessionWithPublishPermissions माध्यम से प्रकाशित अनुमति के लिए पूछ रहे हैं, तो यह com.facebook.sdk.error 5 में फंस जाएगा।

फेसबुक एसडीके 3.7.1 में मुझे अभी भी यह समस्या थी। मूलतः मैंने फ़ॉक्स कैश से टोकन को साफ करने का निर्णय लिया है जब ऐसा होता है इस कदर:

 if(state == FBSessionStateClosed ) { [FBSession.activeSession closeAndClearTokenInformation]; } 

सरल स्विफ्ट 2+ फेसबुक के लिए समाधान प्रवेश टोकन की पुष्टि करने में त्रुटि

 // Step 1: Logout FBSDKLoginManager().logOut() // Step 2: Login FBSDKLoginManager().logInWithReadPermissions(["public_profile", "email"], fromViewController: self, handler: { result, error -> Void in // ... } 

यदि यह त्रुटि तब होती है, तो आपको नया फेसबुक सत्र बनाना पड़ता है, इसलिए आपको फिर से लॉगिन करना होगा।