2016-09-21 11 views
7

मैं अपने उपयोगकर्ता को कॉग्निटो और डेवलपर प्रमाणीकृत पहचान का उपयोग करके प्रमाणित करने का प्रयास कर रहा हूं। मेरा सवाल यह है कि मैं उद्देश्य-सी का उपयोग करके आईओएस में अपने डेवलपर बैकएंड से लौटाए गए सही व्यक्ति को पहचान आईडी कैसे सेट करूं?अमेज़ॅन कॉग्निटो ने डेवलपर प्रमाणीकरण का उपयोग करके पहचान सेट की है Obj C

यदि मैं कोड में मैन्युअल रूप से कॉल करता हूं या पोस्टमैन का उपयोग करता हूं तो सही आईडी मेरे सर्वर द्वारा लौटा दी जाती है और कॉग्निटो इसे पहचानता है और सही ढंग से टोकन को स्वैप करता है।

आईओएस ढांचा एक पहचान असाइन करने लगता है अगर यह सही नहीं है। मैं वास्तव में दस्तावेज को समझने के लिए संघर्ष कर रहा हूं क्योंकि इसमें से अधिकतर पुराना और अस्पष्ट है।

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

NSLog(@"Complete login"); 

    NSMutableDictionary *merge = [NSMutableDictionary dictionaryWithDictionary:self.credentialsProvider.logins]; 
    [merge addEntriesFromDictionary:logins]; 

    self.credentialsProvider.logins = merge; 

    // Force a refresh of credentials to see if we need to merge 
    task = [self.credentialsProvider refresh]; 

    NSLog(@"Complete login 2-- %@", self.credentialsProvider.identityId); //The identityId assigned is incorrect... 
    NSLog(@"Complete login 2-- %@", self.credentialsProvider.identityPoolId); //The identityPoolId is correct 

नीचे कुछ स्पष्टता: यह अब तक कैसे काम करता है: 1 - जब ऐप अपने स्वचालित रूप से चलाता है (अमेज़न से एक यादृच्छिक identityId प्रदान करती है तो उपयोगकर्ता है शुरुआत में अनधिकृत)। 2- उपयोगकर्ता अपने क्रेडेंशियल्स में प्रवेश करता है तो मेरा कोड मेरे बैकएंड के लिए एक यूआरएल अनुरोध करता है जो उपयोगकर्ता नाम और पासवर्ड के लिए वैध टोकन और सही पहचान आईडी देता है। 3- अब यह नई पहचान आईडी को किसी भी तरह पुरानी अनधिकृत पहचान आईडी को ओवरराइड करने के लिए कोड में प्रारंभ करने की आवश्यकता है। 4- नई idendityId और टोकन जो मेरे सर्वर से लौटाया गया है उसे अंतिम प्रमाणीकरण के लिए कॉग्निटो को भेजा जाना चाहिए और कॉग्निटो अधिक प्रमाणीकरण देता है। जब मैं मैन्युअल रूप से कहता हूं तो मैं डाकिया के माध्यम से अनुरोध भेजता हूं।

संक्षेप में: 1: मैं अपनी पहचान कैसे बदल सकता/सकती हूं? 2: मैं अपने क्लाइंट में कॉग्निटो में अपने बैक एंड से प्राप्त अद्यतन प्रमाण-पत्र कैसे भेजूं?

+0

क्या आप पहचान विलय करने की कोशिश कर रहे हैं एँ? गलत पहचान से भी आपका क्या मतलब है (कुछ पहचान वर्तमान उपयोगकर्ता से संबंधित नहीं है?)। क्या आप कृपया विस्तृत रूप से पहचान सेट करके अपना क्या मतलब बता सकते हैं? मैन्युअल रूप से आप किस पहचान को सेट कर रहे हैं? –

+0

मैंने ऊपर कुछ स्पष्टता जोड़ा है। – Luben

उत्तर

2

AWSCognitoCredentials में पहचान आईडी फ़ील्ड प्रदाता उदाहरण में केवल वरीयता है, इसलिए इसे प्रारंभ करने के बाद इसे बदला नहीं जा सकता है। इसे स्थापित करने का एकमात्र तरीका इसकी शुरुआत में है।

id<AWSCognitoCredentialsProvider> credentialsProvider = 
    [[AWSCognitoCredentialsProvider alloc] 
     initWithRegionType:<Region> 
      identityProvider:identityProvider 
      unauthRoleArn:nil 
       authRoleArn:nil]; 

के बाद उपयोगकर्ता को प्रमाणीकृत किया है लॉगिन नक्शे के रूप में अनुवर्ती अपडेट करना सुनिश्चित करें:

credentialsProvider.logins = @{DeveloperProviderName: userIdentifier} 
[credentialsProvider refresh]; 

स्रोत: http://docs.aws.amazon.com/cognito/latest/developerguide/developer-authenticated-identities.html

पुनश्च: सुनिश्चित करें कि आप सही ढंग से पहचान प्रदाता को लागू करने के लिए और ताज़ा में विधि आपको पहचान सेट करना चाहिए

- (AWSTask *)refresh { 
    /* 
    * Get the identityId and token by making a call to your backend 
    */ 
    // Call to your backend 

    // Set the identity id and token 
    self.identityId = response.identityId; 
    self.token = response.token; 
    return [AWSTask taskWithResult:self.identityId]; 
} 
+0

धन्यवाद @ramacode आप और आपके परिवार को आशीर्वाद दिया जा सकता है! – Luben

+0

@ लुबेन मदद करने में खुशी हुई! – ramacode

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