আইওএসে গিটহাব ব্যবহার করে প্রমাণীকরণ করুন

আপনি সাইন-ইন প্রবাহ শেষ করার জন্য ফায়ারবেস এসডিকে ব্যবহার করে আপনার অ্যাপে জেনেরিক OAuth লগইন সংহত করে OAuth প্রদানকারীদের যেমন GitHub ব্যবহার করে আপনার ব্যবহারকারীদের ফায়ারবেস দিয়ে প্রমাণীকরণ করতে পারেন।

তুমি শুরু করার আগে

GitHub অ্যাকাউন্ট ব্যবহার করে ব্যবহারকারীদের সাইন ইন করতে, আপনাকে প্রথমে আপনার Firebase প্রকল্পের জন্য একটি সাইন-ইন প্রদানকারী হিসাবে GitHub সক্ষম করতে হবে:

  1. আপনার iOS প্রকল্পে Firebase যোগ করুন

  2. আপনার নিম্নলিখিত pods অন্তর্ভুক্ত করুন Podfile :

    pod 'Firebase/Auth'
    
  3. ইন Firebase কনসোল , প্রমাণীকরণ অধ্যায় খুলুন।
  4. পদ্ধতি ট্যাবে সাইন অন, GitHub প্রদানকারী সক্রিয় করুন।
  5. ক্লায়েন্ট আইডি এবং যে প্রদানকারীর ডেভেলপার প্রদানকারী কনফিগারেশন কনসোল থেকে ক্লায়েন্ট সিক্রেট যোগ করুন
    1. আপনার অ্যাপ নিবন্ধন GitHub থেকে একটি ডেভেলপার অ্যাপ্লিকেশন হিসেবে এবং আপনার অ্যাপ্লিকেশনের OAuth এর 2.0 ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট পেতে।
    2. নিশ্চিত করুন যে আপনার Firebase OAuth এর পুনর্নির্দেশ কোনো URI (যেমন my-app-12345.firebaseapp.com/__/auth/handler ) আপনার উপর আপনার অ্যাপ্লিকেশনের সেটিংস পৃষ্ঠায় আপনার অনুমোদন কলব্যাক URL হিসেবে সেট করা হয় GitHub অ্যাপ্লিকেশনের কনফিগ
  6. সংরক্ষণ ক্লিক করুন।

ফায়ারবেস এসডিকে দিয়ে সাইন-ইন প্রবাহ পরিচালনা করুন

Firebase iOS SDK- এর মাধ্যমে সাইন-ইন প্রবাহ পরিচালনা করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনার Xcode প্রকল্পে কাস্টম URL স্কিম যুক্ত করুন:

    1. আপনার প্রকল্প কনফিগারেশন খুলুন: বাম গাছের ভিউতে প্রকল্পের নামটিতে ডাবল ক্লিক করুন। ও লক্ষ্যমাত্রা অধ্যায় থেকে আপনার অ্যাপ্লিকেশন নির্বাচন করুন তারপর তথ্য ট্যাব বাছুন এবং URL প্রকারভেদ অধ্যায় প্রসারিত।
    2. + বোতামে ক্লিক করুন, এবং আপনার বিপরীত ক্লায়েন্ট ID জন্য একটি URL স্কিম যোগ করুন। এই মান খুঁজতে, খুলতে GoogleService-Info.plist কনফিগারেশন ফাইল, এবং বর্ণন REVERSED_CLIENT_ID কী। যে কী মান অনুলিপি করুন, এবং এটি URL টি প্রকল্প কনফিগারেশন পৃষ্ঠাতে বাক্সে আটকে দিন। অন্যান্য ক্ষেত্র খালি রাখুন।

      সম্পন্ন হলে, আপনার কনফিগারেশনটি নিম্নলিখিতগুলির মতো দেখতে হবে (তবে আপনার অ্যাপ্লিকেশন-নির্দিষ্ট মানগুলির সাথে):

  2. একটি OAuthProvider প্রদানকারী আইডি github.com ব্যবহারের একটি দৃষ্টান্ত তৈরি করুন।

    সুইফট

        var provider = OAuthProvider(providerID: "github.com")
        

    উদ্দেশ্য গ

        FIROAuthProvider *provider = [FIROAuthProvider providerWithProviderID:@"github.com"];
        
  3. ঐচ্ছিক: অতিরিক্ত কাস্টম OAuth এর পরামিতি উল্লেখ করুন যে আপনি যদি OAuth অনুরোধ পাঠাতে চাই।

    সুইফট

        provider.customParameters = [
          "allow_signup": "false"
        ]
        

    উদ্দেশ্য গ

        [provider setCustomParameters:@{@"allow_signup": @"false"}];
        

    পরামিতি GitHub সমর্থন জন্য, দেখুন GitHub OAuth এর ডকুমেন্টেশন । মনে রাখবেন আপনি সঙ্গে Firebase-প্রয়োজনীয় পরামিতি প্রেরণ করতে পারবেন না setCustomParameters । এই স্থিতিমাপগুলো client_id, REDIRECT_URI, response_type, পরিধিরাষ্ট্র আছে।

  4. ঐচ্ছিক: সাধারণ প্রোফাইল পরলোক 2.0 সুযোগ উল্লেখ অতিরিক্ত OAuth এর যে আপনার প্রমাণীকরণ প্রদানকারীর থেকে অনুরোধ করতে চাই। আপনার আবেদন GitHub API গুলি থেকে ব্যক্তিগত ব্যবহারকারীর তথ্য অ্যাক্সেস করতে থাকে, তাহলে আপনি GitHub ডেভেলপার কনসোল-এ এপিআই অনুমতিসমূহ অধীনে এক্সেস GitHub API গুলি করার অনুরোধ অনুমতির প্রয়োজন হবে। অনুরোধকৃত OAuth স্কোপগুলি অবশ্যই অ্যাপের API অনুমতির পূর্বনির্ধারিতগুলির সাথে সঠিক মিল থাকতে হবে।

    সুইফট

        // Request read access to a user's email addresses.
        // This must be preconfigured in the app's API permissions.
        provider.scopes = ["user:email"]
        

    উদ্দেশ্য গ

        // Request read access to a user's email addresses.
        // This must be preconfigured in the app's API permissions.
        [provider setScopes:@[@"user:email"]];
        

    আরো জানতে, পড়ুন GitHub সুযোগ ডকুমেন্টেশন

  5. ঐচ্ছিক: যেভাবে আপনার অ্যাপ উপহার কাস্টমাইজ করতে চান SFSafariViewController বা UIWebView যখন ব্যবহারকারীকে তথ্যের প্রদর্শন করার একটি কাস্টম বর্গ যে কে কনর্ফাম করে তৈরি FIRAuthUIDelegate প্রোটোকল, এবং এটা পাস getCredentialWithUIDelegate:completion:

  6. OAuth প্রদানকারী বস্তু ব্যবহার করে ফায়ারবেস দিয়ে প্রমাণীকরণ করুন।

    সুইফট

        provider.getCredentialWith(nil) { credential, error in
          if error != nil {
            // Handle error.
          }
          if credential != nil {
            Auth().signIn(with: credential) { authResult, error in
              if error != nil {
                // Handle error.
              }
              // User is signed in.
              // IdP data available in authResult.additionalUserInfo.profile.
    
              guard let oauthCredential = authResult.credential as? OAuthCredential else { return }
              // GitHub OAuth access token can also be retrieved by:
              // oauthCredential.accessToken
              // GitHub OAuth ID token can be retrieved by calling:
              // oauthCredential.idToken
            }
          }
        }
        

    উদ্দেশ্য গ

        [provider getCredentialWithUIDelegate:nil
                                   completion:^(FIRAuthCredential *_Nullable credential,
                                                NSError *_Nullable error) {
          if (error) {
           // Handle error.
          }
          if (credential) {
            [[FIRAuth auth] signInWithCredential:credential
                                      completion:^(FIRAuthDataResult *_Nullable authResult,
                                                NSError *_Nullable error) {
              if (error) {
                // Handle error.
              }
              // User is signed in.
              // IdP data available in authResult.additionalUserInfo.profile.
    
              FIROAuthCredential *oauthCredential = (FIROAuthCredential *)authResult.credential;
              // GitHub OAuth access token can also be retrieved by:
              // oauthCredential.accessToken
              // GitHub OAuth ID token can be retrieved by calling:
              // oauthCredential.idToken
            }];
          }
        }];
        

    OAuth অ্যাক্সেস টোকেন ব্যবহার করে, আপনি কল করতে পারেন GitHub এপিআই

    উদাহরণস্বরূপ, সাধারণ প্রোফাইল তথ্য পেতে, তুমি কী বিশ্রাম এপিআই, কল অ্যাক্সেস IN টোকেন পাশ করতে Authorization শিরোলেখ:

    https://api.github.com/user
    
  7. যদিও উপরের উদাহরণগুলি সাইন-ইন প্রবাহের উপর দৃষ্টি নিবদ্ধ করে, আপনার কাছে গিটহাব সরবরাহকারীকে বিদ্যমান ব্যবহারকারীর সাথে সংযুক্ত করার ক্ষমতাও রয়েছে। উদাহরণস্বরূপ, আপনি একই ব্যবহারকারীর সাথে একাধিক প্রদানকারীকে লিঙ্ক করতে পারেন যাতে তারা তাদের সাথে সাইন ইন করতে পারে।

    সুইফট

        Auth().currentUser.link(withCredential: credential) { authResult, error in
          if error != nil {
            // Handle error.
          }
          // GitHub credential is linked to the current user.
          // IdP data available in authResult.additionalUserInfo.profile.
          // GitHub OAuth access token can also be retrieved by:
          // authResult.credential.accessToken
          // GitHub OAuth ID token can be retrieved by calling:
          // authResult.credential.idToken
        }
        

    উদ্দেশ্য গ

        [[FIRAuth auth].currentUser
            linkWithCredential:credential
                    completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) {
          if (error) {
            // Handle error.
          }
          // GitHub credential is linked to the current user.
          // IdP data available in authResult.additionalUserInfo.profile.
          // GitHub OAuth access token is can also be retrieved by:
          // authResult.credential.accessToken
          // GitHub OAuth ID token can be retrieved by calling:
          // authResult.credential.idToken
        }];
        
  8. একই প্যাটার্ন ব্যবহার করা যেতে পারে reauthenticateWithCredential যা সংবেদনশীল অপারেশন সাম্প্রতিক লগইন করা প্রয়োজন জন্য তাজা পরিচয়পত্র উদ্ধার করতে ব্যবহার করা যাবে।

    সুইফট

        Auth().currentUser.reauthenticateWithCredential(withCredential: credential) { authResult, error in
          if error != nil {
            // Handle error.
          }
          // User is re-authenticated with fresh tokens minted and
          // should be able to perform sensitive operations like account
          // deletion and email or password update.
          // IdP data available in result.additionalUserInfo.profile.
          // Additional OAuth access token is can also be retrieved by:
          // authResult.credential.accessToken
          // GitHub OAuth ID token can be retrieved by calling:
          // authResult.credential.idToken
        }
        

    উদ্দেশ্য গ

        [[FIRAuth auth].currentUser
            reauthenticateWithCredential:credential
                              completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) {
          if (error) {
            // Handle error.
          }
          // User is re-authenticated with fresh tokens minted and
          // should be able to perform sensitive operations like account
          // deletion and email or password update.
          // IdP data available in result.additionalUserInfo.profile.
          // Additional OAuth access token is can also be retrieved by:
          // authResult.credential.accessToken
          // GitHub OAuth ID token can be retrieved by calling:
          // authResult.credential.idToken
        }];
        

পরবর্তী পদক্ষেপ

একজন ব্যবহারকারী প্রথমবার সাইন ইন করার পর, একটি নতুন ব্যবহারকারীর অ্যাকাউন্ট তৈরি করা হয় এবং শংসাপত্রগুলির সাথে সংযুক্ত করা হয় - অর্থাৎ ব্যবহারকারীর নাম এবং পাসওয়ার্ড, ফোন নম্বর, বা স্বাক্ষর প্রদানকারীর তথ্য — ব্যবহারকারী সাইন ইন করেছেন। এই নতুন অ্যাকাউন্টটি আপনার ফায়ারবেস প্রকল্পের অংশ হিসাবে সংরক্ষণ করা হয়েছে এবং ব্যবহারকারী কীভাবে সাইন ইন করে তা নির্বিশেষে আপনার প্রকল্পের প্রতিটি অ্যাপ জুড়ে ব্যবহারকারীকে চিহ্নিত করতে ব্যবহার করা যেতে পারে।

  • আপনার অ্যাপ্লিকেশান, আপনি থেকে ব্যবহারকারীর সাধারণ প্রোফাইল তথ্য পেতে পারেন FIRUser অবজেক্ট। দেখুন ব্যবহারকারীদের পরিচালনা

  • আপনার Firebase রিয়েলটাইম ডাটাবেস এবং ক্লাউড স্টোরেজ সিকিউরিটি রুলস , আপনি পেতে পারেন সাইন ইন থেকে ব্যবহারকারী এর অনন্য ব্যবহারকারী আইডি auth পরিবর্তনশীল, এবং এটি ব্যবহার কোন ডেটা একটি ব্যবহারকারী অ্যাক্সেস করতে পারবেন নিয়ন্ত্রন করতে পারেন।

আপনি ব্যবহারকারীদের দ্বারা একাধিক প্রমাণীকরণ প্রদানকারীর ব্যবহার করে আপনার অ্যাপ্লিকেশানে সাইন ইন করার অনুমতি দিতে পারেন একটি বিদ্যমান ব্যবহারকারীর অ্যাকাউন্টের সাথে প্রমাণীকরণ প্রদানকারী পরিচয়পত্র লিঙ্ক।

একটি ব্যবহারকারী সাইন আউট করতে, কল signOut:

সুইফট

    let firebaseAuth = Auth.auth()
do {
  try firebaseAuth.signOut()
} catch let signOutError as NSError {
  print("Error signing out: %@", signOutError)
}
  

উদ্দেশ্য গ

    NSError *signOutError;
BOOL status = [[FIRAuth auth] signOut:&signOutError];
if (!status) {
  NSLog(@"Error signing out: %@", signOutError);
  return;
}

আপনি প্রমাণীকরণের ত্রুটির সম্পূর্ণ পরিসরের জন্য ত্রুটি পরিচালনা কোড যোগ করতে চাইতে পারেন। দেখুন হাতল ত্রুটি