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

আপনি আপনার ব্যবহারকারীদের ফায়ারবেস এসডিকে ব্যবহার করে শেষ থেকে শেষ OAuth 2.0 সাইন ইন প্রবাহ চালিয়ে যেতে তাদের অ্যাপল আইডি ব্যবহার করে ফায়ারবেস দিয়ে প্রমাণীকরণ করতে পারেন।

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

অ্যাপল ব্যবহার করে ব্যবহারকারীদের সাইন ইন করতে প্রথমে অ্যাপলের বিকাশকারী সাইটে অ্যাপলের সাথে সাইন ইন কনফিগার করুন, তারপরে অ্যাপলটিকে আপনার ফায়ারবেস প্রকল্পের সাইন ইন সরবরাহকারী হিসাবে সক্ষম করুন।

অ্যাপল বিকাশকারী প্রোগ্রামে যোগদান করুন

সাইন ইন অ্যাপল শুধুমাত্র সদস্য কনফিগার করা যেতে পারে অ্যাপল বিকাশকারী প্রোগ্রাম

অ্যাপলের সাথে সাইন ইন কনফিগার করুন

উপর অ্যাপল ডেভেলপার সাইট, নিচের কাজগুলো করুন:

  1. প্রথম অধ্যায় বর্ণনা অনুযায়ী আপনার অ্যাপ্লিকেশানে আপনার ওয়েবসাইট সা ওয়েবের জন্য কনফিগার সাইন অ্যাপল সঙ্গে সালে । যখন অনুরোধ করা হয়, নিম্নলিখিত URL টি একটি রিটার্ন URL হিসাবে নিবন্ধ করুন:

    https://YOUR_FIREBASE_PROJECT_ID.firebaseapp.com/__/auth/handler

    আপনি আপনার Firebase প্রকল্পের আইডি পেতে পারেন Firebase কনসোল সেটিংস পৃষ্ঠায়

    আপনার কাজ শেষ হয়ে গেলে, আপনার নতুন পরিষেবা আইডিটি নোট করুন, যা আপনার পরবর্তী বিভাগে প্রয়োজন।

  2. অ্যাপল ব্যক্তিগত কী দিয়ে একটি নিদর্শন তৈরি করুন । আপনার পরবর্তী বিভাগে আপনার নতুন ব্যক্তিগত কী এবং কী আইডি লাগবে।
  3. আপনি ইমেইল লিঙ্ক সাইন-ইন, ইমেল ঠিকানা যাচাই, অ্যাকাউন্ট পরিবর্তন প্রত্যাহার, এবং অন্যদের সহ Firebase প্রমাণীকরণ এর বৈশিষ্ট্য ব্যবহারকারীরা আর কোনো ইমেল পাঠাতে, কোন ব্যবহার করেন তাহলে কনফিগার অ্যাপল ব্যক্তিগত ইমেইলের রিলে সেবা এবং নিবন্ধন noreply@ YOUR_FIREBASE_PROJECT_ID .firebaseapp.com (অথবা আপনার কাস্টমাইজড ইমেল টেম্পলেট ডোমেন) যাতে অ্যাপল অজ্ঞাতনামা অ্যাপল ইমেল ঠিকানাগুলিতে ফায়ারবেস প্রমাণীকরণের মাধ্যমে প্রেরিত ইমেলগুলি রিলে করতে পারে।

সাইন ইন সরবরাহকারী হিসাবে অ্যাপল সক্ষম করুন

  1. আপনার অ্যান্ড্রয়েড প্রকল্পের Firebase যোগ করুন । আপনি ফায়ারবেস কনসোলে আপনার অ্যাপ্লিকেশনটি সেট আপ করার সময় আপনার অ্যাপের SHA-1 স্বাক্ষরটি নিবন্ধন করতে ভুলবেন না sure
  2. ইন Firebase কনসোল , প্রমাণীকরণ অধ্যায় খুলুন। পদ্ধতি ট্যাবে সাইন অন অ্যাপল প্রদানকারী সক্রিয় করুন। আপনি পূর্ববর্তী বিভাগে তৈরি পরিষেবা আইডি উল্লেখ করুন। এছাড়াও, OAuth এর কোড প্রবাহ কনফিগারেশন বিভাগে, আপনার অ্যাপল টিম ID উল্লেখ এবং ব্যক্তিগত কী এবং কী আইডি আপনি আগের বিভাগে সৃষ্টি করেছেন।

অ্যাপল বেনামেযুক্ত ডেটা প্রয়োজনীয়তা মেনে চলুন

এই অপশনটি নির্বাচন সঙ্গে অ্যাপল ব্যবহারকারীদের তাদের ইমেল ঠিকানা সহ সেগুলির ডেটা, anonymizing সাইন ইন করার সময় বিকল্প দেয় সাইন ইন করুন। ব্যবহারকারীরা ডোমেনের সাথে ইমেল ঠিকানা রয়েছে privaterelay.appleid.com । আপনি যখন আপনার অ্যাপ্লিকেশনটিতে অ্যাপলের সাথে সাইন ইন ব্যবহার করেন, আপনাকে অবশ্যই এই বেনামে প্রকাশিত অ্যাপল আইডি সম্পর্কিত কোনও প্রয়োগযোগ্য বিকাশকারী নীতি বা অ্যাপলের কাছ থেকে শর্তাদি মেনে চলতে হবে।

এটি কোনও অনামী অ্যাপল আইডির সাথে সরাসরি কোনও সনাক্তকারী ব্যক্তিগত তথ্য যুক্ত করার আগে কোনও প্রয়োজনীয় ব্যবহারকারীর সম্মতি অর্জনের অন্তর্ভুক্ত রয়েছে। ফায়ারবেস প্রমাণীকরণ ব্যবহার করার সময়, এটিতে নিম্নলিখিত ক্রিয়াগুলি অন্তর্ভুক্ত থাকতে পারে:

  • কোনও বেনামে থাকা অ্যাপল আইডি বা বিপরীতে কোনও ইমেল ঠিকানা লিঙ্ক করুন।
  • কোনও অজ্ঞাতনামা অ্যাপল আইডি বা বিপরীতে কোনও ফোন নম্বর লিঙ্ক করুন
  • কোনও অজ্ঞাতনামা সামাজিক শংসাপত্র (ফেসবুক, গুগল, ইত্যাদি) কোনও অনামী অ্যাপল আইডি বা এর বিপরীতে লিঙ্ক করুন।

উপরের তালিকায় সম্পূর্ণ নয়। আপনার অ্যাপল অ্যাপলের প্রয়োজনীয়তা পূরণ করে তা নিশ্চিত করতে আপনার বিকাশকারী অ্যাকাউন্টের সদস্যপদ বিভাগে অ্যাপল বিকাশকারী প্রোগ্রাম লাইসেন্স চুক্তিটি দেখুন।

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

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

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

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

    জাভা

    OAuthProvider.Builder provider = OAuthProvider.newBuilder("apple.com");
    

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

    val provider = OAuthProvider.newBuilder("apple.com")
    
  2. ঐচ্ছিক: আপনি প্রমাণীকরণ প্রদানকারীর থেকে অনুরোধ করতে চান ডিফল্ট পরলোক 2.0 সুযোগ উল্লেখ অতিরিক্ত OAuth এর।

    জাভা

    List<String> scopes =
        new ArrayList<String>() {
          {
            add("email");
            add("name");
          }
        };
    provider.setScopes(scopes);
    

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

    provider.setScopes(arrayOf("email", "name"))
    

    ডিফল্টরূপে, যখন ইমেইল ঠিকানা প্রতি এক অ্যাকাউন্ট সক্ষমিত আছে, Firebase ইমেইল এবং নাম সুযোগ অনুরোধ করেছে। ইমেইল ঠিকানা প্রতি একাধিক অ্যাকাউন্টে এই সেটিংটি পরিবর্তন করলে, Firebase অ্যাপল থেকে কোন সুযোগ যদি না আপনি তাদের উল্লেখ অনুরোধ করে না।

  3. ঐচ্ছিক: আপনি ইংরেজী ছাড়া অন্য একটি ভাষায় অ্যাপলের সাইন-ইন স্ক্রিনে প্রদর্শন করতে চান তাহলে, সেট locale প্যারামিটার। দেখুন সাইন অ্যাপল ডক্সের সঙ্গে সালে সমর্থিত লোকেলের জন্য।

    জাভা

    // Localize the Apple authentication screen in French.
    provider.addCustomParameter("locale", "fr");
    

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

    // Localize the Apple authentication screen in French.
    provider.addCustomParameter("locale", "fr")
    
  4. OAuth সরবরাহকারী অবজেক্টটি ব্যবহার করে ফায়ারবেস দিয়ে প্রমাণীকরণ করুন। নোট যে অন্যান্য অসদৃশ FirebaseAuth অপারেশন, এই একটি কাস্টম Chrome ট্যাব খোলার দ্বারা আপনার UI এর নিয়ন্ত্রণ নিতে হবে। ফলে, এ আপনার কার্যকলাপের উল্লেখ না OnSuccessListener এবং OnFailureListener আপনি সংযুক্ত যে তারা অবিলম্বে বিচ্ছিন্ন হবে যখন অপারেশন UI 'তে শুরু হয়।

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

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

    জাভা

    mAuth = FirebaseAuth.getInstance();
    Task<AuthResult> pending = mAuth.getPendingAuthResult();
    if (pending != null) {
        pending.addOnSuccessListener(new OnSuccessListener<AuthResult>() {
            @Override
            public void onSuccess(AuthResult authResult) {
                Log.d(TAG, "checkPending:onSuccess:" + authResult);
                // Get the user profile with authResult.getUser() and
                // authResult.getAdditionalUserInfo(), and the ID
                // token from Apple with authResult.getCredential().
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.w(TAG, "checkPending:onFailure", e);
            }
        });
    } else {
        Log.d(TAG, "pending: null");
    }
    

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

    val pending = auth.pendingAuthResult
    if (pending != null) {
        pending.addOnSuccessListener { authResult ->
            Log.d(TAG, "checkPending:onSuccess:$authResult")
            // Get the user profile with authResult.getUser() and
            // authResult.getAdditionalUserInfo(), and the ID
            // token from Apple with authResult.getCredential().
        }.addOnFailureListener { e ->
            Log.w(TAG, "checkPending:onFailure", e)
        }
    } else {
        Log.d(TAG, "pending: null")
    }
    

    যদি কোনো অপেক্ষারত ফলাফল উপস্থিত, প্রবাহ সাইন ইন করেন, শুরু কল করে startActivityForSignInWithProvider() :

    জাভা

    mAuth.startActivityForSignInWithProvider(this, provider.build())
            .addOnSuccessListener(
                    new OnSuccessListener<AuthResult>() {
                        @Override
                        public void onSuccess(AuthResult authResult) {
                            // Sign-in successful!
                            Log.d(TAG, "activitySignIn:onSuccess:" + authResult.getUser());
                            FirebaseUser user = authResult.getUser();
                            // ...
                        }
                    })
            .addOnFailureListener(
                    new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            Log.w(TAG, "activitySignIn:onFailure", e);
                        }
                    });
    

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

    auth.startActivityForSignInWithProvider(this, provider.build())
            .addOnSuccessListener { authResult ->
                // Sign-in successful!
                Log.d(TAG, "activitySignIn:onSuccess:${authResult.user}")
                val user = authResult.user
                // ...
            }
            .addOnFailureListener { e ->
                Log.w(TAG, "activitySignIn:onFailure", e)
            }
    

    ফায়ারবেস আথ সমর্থিত অন্যান্য সরবরাহকারীদের মতো নয়, অ্যাপল কোনও ফটো ইউআরএল সরবরাহ করে না।

    এছাড়াও, ব্যবহারকারী অ্যাপ্লিকেশন, সেই ব্যবহারকারীর (ফর্ম এর জন্য অ্যাপল বিধান একটি অনন্য ইমেল ঠিকানা দিয়ে তাদের ইমেল ভাগ করতে বেছে যখন xyz@privaterelay.appleid.com , যা এটি আপনার অ্যাপের সঙ্গে শেয়ার)। আপনি যদি ব্যক্তিগত ইমেল রিলে পরিষেবাটি কনফিগার করেন তবে অ্যাপল বেনামে পাঠানো ইমেলগুলি ব্যবহারকারীর আসল ইমেল ঠিকানায় ফরোয়ার্ড করে।

    যেমন প্রথমবার অ্যাপ্লিকেশনগুলির সাথে প্রদর্শন নাম হিসেবে অ্যাপল শুধুমাত্র শেয়ার ব্যবহারকারীর তথ্য একটি ব্যবহারকারীর লক্ষণ। সাধারণত, Firebase দোকানে প্রদর্শন নাম প্রথমবার অ্যাপল, এটি দিয়ে একটি ব্যবহারকারী লক্ষণ আপনার সাথে পেতে পারেন getCurrentUser().getDisplayName() । তবে, আপনি যদি আগে ফায়ারবেস ব্যবহার না করে অ্যাপলটিতে কোনও ব্যবহারকারীকে সাইন ইন করতে অ্যাপল ব্যবহার করেন তবে অ্যাপল ব্যবহারকারীর প্রদর্শনের নাম ফায়ারবেস সরবরাহ করবে না।

পুনর্নির্মাণ এবং অ্যাকাউন্ট লিঙ্কিং

একই প্যাটার্ন ব্যবহার করা যেতে পারে startActivityForReauthenticateWithProvider() যা আপনি সংবেদনশীল অপারেশন সাম্প্রতিক সাইন-ইন দরকার জন্য একটি তাজা ক্রেডেনশিয়াল পুনরুদ্ধার করতে ব্যবহার করতে পারেন:

জাভা

// The user is already signed-in.
FirebaseUser firebaseUser = mAuth.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.
          }
        });

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

// The user is already signed-in.
val firebaseUser = auth.getCurrentUser()

firebaseUser
    .startActivityForReauthenticateWithProvider(/* activity= */ this, provider.build())
    .addOnSuccessListener( 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( e -> {
        // Handle failure.
    })

এবং, আপনি ব্যবহার করতে পারেন linkWithCredential() বিদ্যমান অ্যাকাউন্টে বিভিন্ন পরিচিতি প্রদানকারীদের লিঙ্ক করতে।

নোট করুন যে অ্যাপলের অ্যাকাউন্টগুলির অন্য ডেটাতে লিঙ্ক করার আগে অ্যাপলের আপনার ব্যবহারকারীদের থেকে স্পষ্ট সম্মতি নেওয়া দরকার।

উদাহরণস্বরূপ, বর্তমান ফায়ারবেস অ্যাকাউন্টে একটি ফেসবুক অ্যাকাউন্ট লিঙ্ক করতে, ব্যবহারকারীকে ফেসবুকে সাইন ইন করার মাধ্যমে আপনি যে অ্যাক্সেস টোকেনটি পেয়েছেন তা ব্যবহার করুন:

জাভা

// Initialize a Facebook credential with a Facebook access token.
AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());

// Assuming the current user is an Apple user linking a Facebook provider.
mAuth.getCurrentUser().linkWithCredential(credential)
    .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
      @Override
      public void onComplete(@NonNull Task<AuthResult> task) {
        if (task.isSuccessful()) {
          // Facebook credential is linked to the current Apple user.
          // The user can now sign in to the same account
          // with either Apple or Facebook.
        }
      }
    });

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

// Initialize a Facebook credential with a Facebook access token.
val credential = FacebookAuthProvider.getCredential(token.getToken())

// Assuming the current user is an Apple user linking a Facebook provider.
mAuth.getCurrentUser().linkWithCredential(credential)
    .addOnCompleteListener(this, task -> {
        if (task.isSuccessful()) {
          // Facebook credential is linked to the current Apple user.
          // The user can now sign in to the same account
          // with either Apple or Facebook.
        }
      });

উন্নত: সাইন ইন ফ্লোটি ম্যানুয়ালি হ্যান্ডেল করুন

এছাড়াও আপনি পারেন অ্যাপল সাইন-ইন জাতীয় SDK এর ব্যবহার করে সাইন-ইন ফ্লো হ্যান্ডলিং, ম্যানুয়ালি OAuth এর প্রবাহ নির্মাণের দ্বারা বা এই ধরনের যেমন একটি OAuth গ্রন্থাগার ব্যবহার করে একটি আপেল অ্যাকাউন্ট ব্যবহার করে Firebase সঙ্গে পরিচয় প্রমাণ করতে পারে AppAuth

  1. প্রতিটি সাইন-ইন অনুরোধের জন্য, একটি এলোমেলো স্ট্রিং তৈরি করুন - একটি "ননস" - যা আপনার আইডি টোকেনটি পেয়েছে তা নিশ্চিত করার জন্য আপনি আপনার অ্যাপ্লিকেশনটির অনুমোদনের অনুরোধের জবাবে বিশেষত অনুমোদন পেয়েছেন। রিপ্লে আক্রমণ প্রতিরোধে এই পদক্ষেপটি গুরুত্বপূর্ণ।

    আপনার সাথে Android এর উপর একটা ক্রিপ্টোগ্রাফি নিরাপদ আপাতত তৈরি করতে পারেন SecureRandom , নিম্নলিখিত উদাহরণে হিসাবে:

    জাভা

    private String generateNonce(int length) {
        SecureRandom generator = new SecureRandom();
    
        CharsetDecoder charsetDecoder = StandardCharsets.US_ASCII.newDecoder();
        charsetDecoder.onUnmappableCharacter(CodingErrorAction.IGNORE);
        charsetDecoder.onMalformedInput(CodingErrorAction.IGNORE);
    
        byte[] bytes = new byte[length];
        ByteBuffer inBuffer = ByteBuffer.wrap(bytes);
        CharBuffer outBuffer = CharBuffer.allocate(length);
        while (outBuffer.hasRemaining()) {
            generator.nextBytes(bytes);
            inBuffer.rewind();
            charsetDecoder.reset();
            charsetDecoder.decode(inBuffer, outBuffer, false);
        }
        outBuffer.flip();
        return outBuffer.toString();
    }
    

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

    private fun generateNonce(length: Int): String {
        val generator = SecureRandom()
    
        val charsetDecoder = StandardCharsets.US_ASCII.newDecoder()
        charsetDecoder.onUnmappableCharacter(CodingErrorAction.IGNORE)
        charsetDecoder.onMalformedInput(CodingErrorAction.IGNORE)
    
        val bytes = ByteArray(length)
        val inBuffer = ByteBuffer.wrap(bytes)
        val outBuffer = CharBuffer.allocate(length)
        while (outBuffer.hasRemaining()) {
            generator.nextBytes(bytes)
            inBuffer.rewind()
            charsetDecoder.reset()
            charsetDecoder.decode(inBuffer, outBuffer, false)
        }
        outBuffer.flip()
        return outBuffer.toString()
    }
    

    তারপরে, হেক্স স্ট্রিং হিসাবে ননসের SHA246 হ্যাশ পান:

    জাভা

    private String sha256(String s) throws NoSuchAlgorithmException {
        MessageDigest md = MessageDigest.getInstance("SHA-256");
        byte[] digest = md.digest(s.getBytes());
        StringBuilder hash = new StringBuilder();
        for (byte c: digest) {
            hash.append(String.format("%02x", c));
        }
        return hash.toString();
    }
    

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

    private fun sha256(s: String): String {
        val md = MessageDigest.getInstance("SHA-256")
        val digest = md.digest(s.toByteArray())
        val hash = StringBuilder()
        for (c in digest) {
            hash.append(String.format("%02x", c))
        }
        return hash.toString()
    }
    

    আপনি আপনার সাইন-ইন অনুরোধের সাথে ননসের SHA256 হ্যাশ প্রেরণ করবেন যা অ্যাপল প্রতিক্রিয়াতে অপরিবর্তিত থাকবে। ফায়ারবেস আসল ননকে হ্যাশ করে এবং এটি অ্যাপল কর্তৃক প্রদত্ত মানের সাথে তুলনা করে প্রতিক্রিয়াটিকে বৈধ করে।

  2. আপনার OAuth লাইব্রেরি বা অন্যান্য পদ্ধতি ব্যবহার করে অ্যাপলের সাইন ইন ফ্লো শুরু করুন। আপনার অনুরোধে হ্যাশ ননসকে প্যারামিটার হিসাবে অন্তর্ভুক্ত করার বিষয়ে নিশ্চিত হন।

  3. আপনি অ্যাপলের সাড়া পাওয়ার পরে, আইডি প্রতিক্রিয়া থেকে টোকেন পাওয়ার এবং একটি তৈরি করতে এটি এবং unhashed আপাতত ব্যবহার AuthCredential :

    জাভা

    AuthCredential credential =  OAuthProvider.newCredentialBuilder("apple.com")
        .setIdTokenWithRawNonce(appleIdToken, rawUnhashedNonce)
        .build();
    

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

    val credential =  OAuthProvider.newCredentialBuilder("apple.com")
        .setIdTokenWithRawNonce(appleIdToken, rawUnhashedNonce)
        .build()
    
  4. ফায়ারবেস শংসাপত্র ব্যবহার করে ফায়ারবেস দিয়ে প্রমাণীকরণ করুন:

    জাভা

    mAuth.signInWithCredential(credential)
        .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
          @Override
          public void onComplete(@NonNull Task<AuthResult> task) {
            if (task.isSuccessful()) {
              // User successfully signed in with Apple ID token.
              // ...
            }
          }
        });
    

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

    auth.signInWithCredential(credential)
          .addOnCompleteListener(this) { task ->
              if (task.isSuccessful) {
                // User successfully signed in with Apple ID token.
                // ...
              }
          }
    

থেকে কল তাহলে signInWithCredential সফল হয়, আপনি ব্যবহার করতে পারেন getCurrentUser ব্যবহারকারীর অ্যাকাউন্ট ডেটা পেতে পদ্ধতি।

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

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

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

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

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

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

জাভা

FirebaseAuth.getInstance().signOut();

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

Firebase.auth.signOut()