शेयर किए गए Apple Keychain के साथ क्रॉस-ऐप्लिकेशन प्रमाणीकरण चालू करना

Apple प्लैटफ़ॉर्म पर कई ऐप्लिकेशन या एक्सटेंशन पर पुष्टि की स्थितियां शेयर करने के लिए, Keychain सेवाओं का इस्तेमाल करके, शेयर की गई कीचेन में पुष्टि करने की स्थिति और शेयर किए गए कीचेन का इस्तेमाल करने के लिए अपने ऐप्लिकेशन को कॉन्फ़िगर करें.

इससे उपयोगकर्ता ये काम कर सकते हैं:

  • एक बार साइन इन करने पर, एक ही ऐक्सेस ग्रुप के सभी ऐप्लिकेशन में साइन इन किया जा सकता है.
  • एक बार साइन आउट करने पर, एक ही ऐक्सेस ग्रुप के सभी ऐप्लिकेशन से साइन आउट हो जाएगा.

ऐप्लिकेशन के बीच पुष्टि की स्थिति शेयर करना

ऐप्लिकेशन के बीच अनुमति की स्थिति शेयर करने के लिए:

  1. अपने ऐप्लिकेशन के लिए ऐक्सेस ग्रुप सेट अप करें.

    आपके पास पासकोड ऐक्सेस करने वाले लोगों के लिए, पासकोड की जानकारी शेयर करने वाले ग्रुप या ऐप्लिकेशन ग्रुप में से किसी एक का इस्तेमाल करने का विकल्प होता है. ज़्यादा जानकारी के लिए, ऐप्लिकेशन के कलेक्शन के बीच Keychain आइटम का ऐक्सेस शेयर करना देखें.

    पासकोड की जानकारी ऐक्सेस करने वाले ऐप्लिकेशन का ग्रुप सेट अप करने के लिए, हर ऐप्लिकेशन के लिए यह तरीका अपनाएं:

    1. Xcode में, प्रोजेक्ट सेटिंग > सुविधाएं पर जाएं.
    2. कीचेन साझाकरण सक्षम करें.
    3. पासवर्ड कीवर्ड के लिए कोई ग्रुप आइडेंटिफ़ायर जोड़ें. उन सभी के लिए एक ही आइडेंटिफ़ायर का इस्तेमाल करें में है, जिसकी स्थिति शेयर करनी है.
  2. हर ऐप्लिकेशन में, ऐक्सेस ग्रुप को उस पासकोड कीवर्ड के ऐक्सेस ग्रुप या ऐप्लिकेशन ग्रुप पर सेट करें जिसे आपने पिछले चरण में बनाया था.

    Swift

    do {
      try Auth.auth().useUserAccessGroup("TEAMID.com.example.group1")
    } catch let error as NSError {
      print("Error changing user access group: %@", error)
    }
    

    Objective-C

    [FIRAuth.auth useUserAccessGroup:@"TEAMID.com.example.group1"
                                       error:nil];
    
  3. कम से कम एक ऐप्लिकेशन में, साइन इन करने के किसी भी तरीके से साइन इन करें.

    Swift

    Auth.auth().signInAnonymously { result, error in
      // User signed in
    }
    

    Objective-C

    [FIRAuth signInAnonymouslyWithCompletion:^(FIRAuthDataResult *_Nullable result,
                                               NSError *_Nullable error) {
      // User signed in
    }];
    

    वही मौजूदा उपयोगकर्ता, ऐक्सेस ग्रुप के सभी ऐप्लिकेशन में उपलब्ध होता है.

    Swift

    var user = Auth.auth().currentUser
    

    Objective-C

    FIRUser *user = FIRAuth.auth.currentUser;
    

शेयर नहीं किए गए कीचेन पर वापस स्विच करें

  1. पुष्टि की स्थिति शेयर करना बंद करने के लिए, ऐक्सेस ग्रुप को nil पर सेट करें.

    Swift

    do {
      try Auth.auth().useUserAccessGroup(nil)
    } catch let error as NSError {
      print("Error changing user access group: %@", error)
    }
    

    Objective-C

    [FIRAuth.auth useUserAccessGroup:nil error:nil];
    
  2. साइन इन करने के किसी भी तरीके का इस्तेमाल करके, उपयोगकर्ता को साइन इन करें. उपयोगकर्ता की स्थिति की जानकारी, किसी अन्य ऐप्लिकेशन के लिए उपलब्ध नहीं होगी.

    Swift

    Auth.auth().signInAnonymously { result, error in
      // User signed in
    }
    

    Objective-C

    [FIRAuth signInAnonymouslyWithCompletion:^(FIRAuthDataResult *_Nullable result,
                                       NSError *_Nullable error) {
      // User signed in
    }];
    

साइन इन किए हुए उपयोगकर्ता को शेयर किए गए कीचेन पर माइग्रेट करें

किसी ऐसे उपयोगकर्ता को माइग्रेट करने के लिए जिसने पहले से ही शेयर की गई स्थिति में साइन इन किया हुआ है:

  1. आने वाले समय में इस्तेमाल करने के लिए, मौजूदा उपयोगकर्ता का रेफ़रंस बनाएं.

    Swift

    var user = Auth.auth().currentUser
    

    Objective-C

    FIRUser *user = FIRAuth.auth.currentUser;
    
  2. (ज़रूरी नहीं) जिस ऐक्सेस ग्रुप को शेयर करना है उसके अधिकार की स्थिति देखें.

    Swift

    let accessGroup = "TEAMID.com.example.group1"
    var tempUser: User?
    do {
      try tempUser = Auth.auth().getStoredUser(forAccessGroup: accessGroup)
    } catch let error as NSError {
      print("Error getting stored user: %@", error)
    }
    if tempUser != nil {
      // A user exists in the access group
    } else {
      // No user exists in the access group
    }
    

    Objective-C

    NSString *accessGroup = @"TEAMID.com.example.group1";
    FIRUser *tempUser = [FIRAuth getStoredUserForAccessGroup:accessGroup
                                                       error:nil];
    if (tempUser) {
      // A user exists in the access group
      } else {
      // No user exists in the access group
    }
    
  3. उस ऐक्सेस ग्रुप का इस्तेमाल करें जिसे आपने पहले प्रोजेक्ट की सेटिंग में सेट किया था.

    Swift

    do {
      try Auth.auth().useUserAccessGroup(accessGroup)
    } catch let error as NSError {
      print("Error changing user access group: %@", error)
    }
    

    Objective-C

    [FIRAuth.auth useUserAccessGroup:accessGroup error:nil];
    
  4. मौजूदा उपयोगकर्ता की जानकारी अपडेट करें.

    Swift

    Auth.auth().updateCurrentUser(user!) { error in
      // Error handling
    }
    

    Objective-C

    [FIRAuth.auth updateCurrentUser:user completion:^(NSError * _Nullable error) {
      // Error handling
    }];
    
  5. अब उस उपयोगकर्ता को ऐसे अन्य ऐप्लिकेशन ऐक्सेस कर सकते हैं जिनके पास उसी ऐक्सेस ग्रुप का ऐक्सेस है.