অ্যান্ড্রয়েডে গিটহাব ব্যবহার করে প্রমাণীকরণ করুন

আপনি আপনার ব্যবহারকারীদের তাদের GitHub অ্যাকাউন্ট ব্যবহার করে Firebase- এর মাধ্যমে প্রমাণীকরণ করতে দিতে পারেন ওয়েব-ভিত্তিক জেনেরিক OAuth লগইনকে আপনার অ্যাপে সংযুক্ত করে Firebase SDK ব্যবহার করে সাইন-ইন প্রবাহ শেষ করতে।

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

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

  1. আপনি ইতিমধ্যে থাকে, তাহলে আপনার অ্যান্ড্রয়েড প্রকল্পের Firebase যোগ

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

    জাভা

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.4.1')
    
        // Declare the dependency for the Firebase Authentication library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-auth'
    }
    

    ব্যবহারের Firebase অ্যান্ড্রয়েড Bom , আপনার অ্যাপ্লিকেশন সবসময় Firebase অ্যান্ড্রয়েড লাইব্রেরি সামঞ্জস্যপূর্ণ সংস্করণ ব্যবহার করবে।

    (বিকল্প) Bom ব্যবহার না করেই Firebase গ্রন্থাগার নির্ভরতা ঘোষণা

    আপনি যদি Firebase BoM ব্যবহার না করার সিদ্ধান্ত নেন, তাহলে আপনাকে অবশ্যই প্রতিটি Firebase লাইব্রেরির সংস্করণ তার নির্ভরতা লাইনে নির্দিষ্ট করতে হবে।

    মনে রাখবেন যদি আপনি আপনার অ্যাপ্লিকেশন একাধিক Firebase লাইব্রেরি ব্যবহার করেন তখন আমরা অত্যন্ত গ্রন্থাগার সংস্করণ, যা নিশ্চিত করে যে সমস্ত সংস্করণের সামঞ্জস্যপূর্ণ পরিচালনা করতে Bom ব্যবহার সুপারিশ।

    dependencies {
        // Declare the dependency for the Firebase Authentication library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-auth:21.0.1'
    }
    

    কোটলিন+কেটিএক্স

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.4.1')
    
        // Declare the dependency for the Firebase Authentication library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-auth-ktx'
    }
    

    ব্যবহারের Firebase অ্যান্ড্রয়েড Bom , আপনার অ্যাপ্লিকেশন সবসময় Firebase অ্যান্ড্রয়েড লাইব্রেরি সামঞ্জস্যপূর্ণ সংস্করণ ব্যবহার করবে।

    (বিকল্প) Bom ব্যবহার না করেই Firebase গ্রন্থাগার নির্ভরতা ঘোষণা

    আপনি যদি Firebase BoM ব্যবহার না করার সিদ্ধান্ত নেন, তাহলে আপনাকে অবশ্যই প্রতিটি Firebase লাইব্রেরির সংস্করণ তার নির্ভরতা লাইনে নির্দিষ্ট করতে হবে।

    মনে রাখবেন যদি আপনি আপনার অ্যাপ্লিকেশন একাধিক Firebase লাইব্রেরি ব্যবহার করেন তখন আমরা অত্যন্ত গ্রন্থাগার সংস্করণ, যা নিশ্চিত করে যে সমস্ত সংস্করণের সামঞ্জস্যপূর্ণ পরিচালনা করতে Bom ব্যবহার সুপারিশ।

    dependencies {
        // Declare the dependency for the Firebase Authentication library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-auth-ktx:21.0.1'
    }
    

  7. আপনি যদি এখনো আপনার অ্যাপ্লিকেশনের রয়েছে SHA-1 আঙুলের ছাপ নির্দিষ্ট না করে থাকেন, থেকে তা করতে সেটিংস পৃষ্ঠা Firebase কনসোলের। পড়ুন আপনার ক্লায়েন্ট প্রমাণ করা হচ্ছে কিভাবে আপনার অ্যাপ্লিকেশনের রয়েছে SHA-1 আঙুলের ছাপ পেতে বিস্তারিত।

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

আপনি যদি একটি অ্যান্ড্রয়েড অ্যাপ তৈরি করেন, তাহলে আপনার ব্যবহারকারীদের তাদের গিটহাব অ্যাকাউন্ট ব্যবহার করে ফায়ারবেস দিয়ে প্রমাণীকরণের সবচেয়ে সহজ উপায় হল ফায়ারবেস অ্যান্ড্রয়েড এসডিকে দিয়ে সম্পূর্ণ সাইন-ইন প্রবাহ পরিচালনা করা।

ফায়ারবেস অ্যান্ড্রয়েড এসডিকে দিয়ে সাইন-ইন প্রবাহ পরিচালনা করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. একটি OAuthProvider প্রদানকারী আইডি দিয়ে তার নির্মাতা ব্যবহারের একটি দৃষ্টান্ত github.com আঁকো

    OAuthProvider.Builder provider = OAuthProvider.newBuilder("github.com");
    
  2. ঐচ্ছিক: অতিরিক্ত কাস্টম OAuth এর পরামিতি উল্লেখ করুন যে আপনি যদি OAuth অনুরোধ পাঠাতে চাই।

    // Target specific email with login hint.
    provider.addCustomParameter("login", "your-email@gmail.com");
    

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

  3. ঐচ্ছিক: সাধারণ প্রোফাইল পরলোক 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.
    List<String> scopes =
        new ArrayList<String>() {
          {
            add("user:email");
          }
        };
    provider.setScopes(scopes);
    
  4. OAuth প্রদানকারী বস্তু ব্যবহার করে ফায়ারবেস দিয়ে প্রমাণীকরণ করুন। নোট যে অন্যান্য FirebaseAuth অপারেশন অসদৃশ, এই একটি পপিং আপ দ্বারা আপনার UI এর নিয়ন্ত্রণ নিতে হবে কাস্টম Chrome ট্যাবটি । ফলস্বরূপ, এ আপনার কার্যকলাপের উল্লেখ না OnSuccessListener এবং OnFailureListener আপনি সংযুক্ত যে তারা অবিলম্বে বিচ্ছিন্ন হবে যখন অপারেশন UI 'তে শুরু হয়।

    আপনি ইতিমধ্যে একটি প্রতিক্রিয়া পেয়েছেন কিনা তা পরীক্ষা করা উচিত। এই পদ্ধতির মাধ্যমে সাইন ইন করা আপনার ক্রিয়াকলাপকে পটভূমিতে রাখে, যার অর্থ সাইন ইন প্রবাহের সময় এটি সিস্টেম দ্বারা পুনরুদ্ধার করা যেতে পারে। এটি নিশ্চিত করার জন্য যে আপনি যদি ব্যবহারকারীকে আবার চেষ্টা না করেন তবে এটি পরীক্ষা করা উচিত যে ফলাফল ইতিমধ্যে উপস্থিত আছে কিনা।

    যদি একটি মুলতুবি ফল পরীক্ষা করার জন্য, কল getPendingAuthResult :

    Task<AuthResult> pendingResultTask = firebaseAuth.getPendingAuthResult();
    if (pendingResultTask != null) {
      // There's something already here! Finish the sign-in for your user.
      pendingResultTask
          .addOnSuccessListener(
              new OnSuccessListener<AuthResult>() {
                @Override
                public void onSuccess(AuthResult authResult) {
                  // User is signed in.
                  // IdP data available in
                  // authResult.getAdditionalUserInfo().getProfile().
                  // The OAuth access token can also be retrieved:
                  // authResult.getCredential().getAccessToken().
                }
              })
          .addOnFailureListener(
              new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                  // Handle failure.
                }
              });
    } else {
      // There's no pending result so you need to start the sign-in flow.
      // See below.
    }
    

    প্রবাহ সাইন ইন শুরু করার জন্য, কল startActivityForSignInWithProvider :

    firebaseAuth
        .startActivityForSignInWithProvider(/* activity= */ this, provider.build())
        .addOnSuccessListener(
            new OnSuccessListener<AuthResult>() {
              @Override
              public void onSuccess(AuthResult authResult) {
                // User is signed in.
                // IdP data available in
                // authResult.getAdditionalUserInfo().getProfile().
                // The OAuth access token can also be retrieved:
                // authResult.getCredential().getAccessToken().
              }
            })
        .addOnFailureListener(
            new OnFailureListener() {
              @Override
              public void onFailure(@NonNull Exception e) {
                // Handle failure.
              }
            });
    

    সফল সমাপ্তির পর থেকে প্রদানকারীর সাথে যুক্ত টোকেন OAuth অ্যাক্সেস পুনরায় উদ্ধার করা যাবে OAuthCredential অবজেক্ট ফিরিয়ে দিয়েছে।

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

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

  5. উপরের উদাহরণগুলোতে উপর ফোকাস করার সময় সাইন-ইন প্রবাহ, এছাড়াও আপনি ব্যবহার করে একটি বিদ্যমান ব্যবহারকারী করার জন্য একটি GitHub প্রদানকারী সংযোগ আছে ক্ষমতা আছে startActivityForLinkWithProvider । উদাহরণস্বরূপ, আপনি একাধিক ব্যবহারকারীকে একই ব্যবহারকারীর সাথে লিঙ্ক করতে পারেন যাতে তারা তাদের সাথে সাইন ইন করতে পারে।

    // The user is already signed-in.
    FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
    
    firebaseUser
        .startActivityForLinkWithProvider(/* activity= */ this, provider.build())
        .addOnSuccessListener(
            new OnSuccessListener<AuthResult>() {
              @Override
              public void onSuccess(AuthResult authResult) {
                // GitHub credential is linked to the current user.
                // IdP data available in
                // authResult.getAdditionalUserInfo().getProfile().
                // The OAuth access token can also be retrieved:
                // authResult.getCredential().getAccessToken().
              }
            })
        .addOnFailureListener(
            new OnFailureListener() {
              @Override
              public void onFailure(@NonNull Exception e) {
                // Handle failure.
              }
            });
    
    
  6. একই প্যাটার্ন ব্যবহার করা যেতে পারে startActivityForReauthenticateWithProvider যা সংবেদনশীল অপারেশন সাম্প্রতিক লগইন করা প্রয়োজন জন্য তাজা পরিচয়পত্র উদ্ধার করতে ব্যবহার করা যাবে।

    // The user is already signed-in.
    FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
    
    firebaseUser
        .startActivityForReauthenticateWithProvider(/* activity= */ this, provider.build())
        .addOnSuccessListener(
            new OnSuccessListener<AuthResult>() {
              @Override
              public void onSuccess(AuthResult authResult) {
                // User is re-authenticated with fresh tokens and
                // should be able to perform sensitive operations
                // like account deletion and email or password
                // update.
              }
            })
        .addOnFailureListener(
            new OnFailureListener() {
              @Override
              public void onFailure(@NonNull Exception e) {
                // Handle failure.
              }
            });
    

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

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

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

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

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

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

জাভা

FirebaseAuth.getInstance().signOut();

কোটলিন+কেটিএক্স

Firebase.auth.signOut()