কীভাবে স্মার্ট হোম অ্যাকশন তৈরি করতে হয় তা শেখার নতুন গন্তব্য Google হোম ডেভেলপার সেন্টারে স্বাগতম। দ্রষ্টব্য: আপনি অ্যাকশন কনসোলে নির্মাণ কাজ চালিয়ে যাবেন।

অ্যান্ড্রয়েডের জন্য অ্যাপ ফ্লিপ

সেভ করা পৃষ্ঠা গুছিয়ে রাখতে 'সংগ্রহ' ব্যবহার করুন আপনার পছন্দ অনুযায়ী কন্টেন্ট সেভ করুন ও সঠিক বিভাগে রাখুন।

একবার আপনার একটি OAuth 2.0 বাস্তবায়ন হয়ে গেলে, আপনি ঐচ্ছিকভাবে OAuth-ভিত্তিক App Flip কনফিগার করতে পারেন, যা আপনার Android ব্যবহারকারীদের আপনার প্রমাণীকরণ সিস্টেমে তাদের অ্যাকাউন্টগুলিকে তাদের Google অ্যাকাউন্টগুলির সাথে আরও দ্রুত লিঙ্ক করতে দেয়৷ নিম্নলিখিত বিভাগগুলি বর্ণনা করে যে কীভাবে আপনার smart home অ্যাকশনের জন্য App Flip ডিজাইন এবং বাস্তবায়ন করবেন।

Design guidelines

This section describes the design requirements and recommendations for the App Flip account linking consent screen. After Google calls your app, your app displays the consent screen to the user.

Requirements

  1. You must communicate that the user's account is being linked to Google, not to a specific Google product, such as Google Home or Google Assistant.

Recommendations

We recommend that you do the following:

  1. Display Google's Privacy Policy. Include a link to Google's Privacy Policy on the consent screen.

  2. Data to be shared. Use clear and concise language to tell the user what data of theirs Google requires and why.

  3. Clear call-to-action. State a clear call-to-action on your consent screen, such as "Agree and link." This is because users need to understand what data they're required to share with Google to link their accounts.

  4. Ability to cancel. Provide a way for users to go back or cancel, if they choose not to link.

  5. Ability to unlink. Offer a mechanism for users to unlink, such as a URL to their account settings on your platform. Alternatively, you can include a link to Google Account where users can manage their linked account.

  6. Ability to change user account. Suggest a method for users to switch their account(s). This is especially beneficial if users tend to have multiple accounts.

    • If a user must close the consent screen to switch accounts, send a recoverable error to Google so the user can sign in to the desired account with OAuth linking and the implicit flow.
  7. Include your logo. Display your company logo on the consent screen. Use your style guidelines to place your logo. If you wish to also display Google's logo, see Logos and trademarks.

This figure shows an example consent screen with call-outs to the
            individual requirements and recommendations to be followed when
            you design a user consent screen.
Figure 1: Account linking consent screen design guidelines.

OAuth-ভিত্তিক অ্যাপ ফ্লিপের জন্য সেট আপ করুন

নিম্নলিখিত বিভাগগুলি OAuth-ভিত্তিক অ্যাপ ফ্লিপের পূর্বশর্ত এবং অ্যাকশন কনসোলে আপনার অ্যাপ ফ্লিপ প্রকল্পটি কীভাবে কনফিগার করবেন তা বর্ণনা করে।

একটি স্মার্ট হোম অ্যাকশন তৈরি করুন এবং একটি OAuth 2.0 সার্ভার সেট আপ করুন৷

আপনি অ্যাপ ফ্লিপ কনফিগার করার আগে, আপনাকে নিম্নলিখিতগুলি করতে হবে:

অ্যাকশন কনসোলে অ্যাপ ফ্লিপ কনফিগার করুন

নিম্নলিখিত বিভাগটি বর্ণনা করে কিভাবে অ্যাকশন কনসোলে অ্যাপ ফ্লিপ কনফিগার করতে হয়।

  1. OAuth ক্লায়েন্ট তথ্যের অধীনে সমস্ত ক্ষেত্র পূরণ করুন। (যদি অ্যাপ ফ্লিপ সমর্থিত না হয়, তাহলে নিয়মিত OAuth ফলব্যাক হিসেবে ব্যবহার করা হয়।)
  2. অ্যাকাউন্ট লিঙ্ক করার জন্য আপনার অ্যাপ ব্যবহার করুন (ঐচ্ছিক) এর অধীনে, Android এর জন্য সক্ষম করুন চেক করুন।
  3. নিম্নলিখিত ক্ষেত্রগুলি পূরণ করুন:
    • আবেদন আইডি. অ্যাপ্লিকেশন আইডি হল একটি অনন্য আইডি যা আপনি আপনার অ্যাপের জন্য সেট করেছেন।
    • অ্যাপ স্বাক্ষর। অ্যান্ড্রয়েড অ্যাপগুলিকে ইনস্টল করার আগে অবশ্যই একটি পাবলিক-কী শংসাপত্র দিয়ে 'স্বাক্ষরিত' হতে হবে৷ আপনার অ্যাপ স্বাক্ষর পাওয়ার বিষয়ে তথ্যের জন্য, আপনার ক্লায়েন্ট প্রমাণীকরণ দেখুন।
    • অনুমোদন অভিপ্রায়. এই ক্ষেত্রে, একটি স্ট্রিং লিখুন যা আপনার অভিপ্রায় ক্রিয়া নির্দিষ্ট করে।
  4. আপনি যদি ঐচ্ছিকভাবে আপনার ক্লায়েন্ট কনফিগার করতে চান, স্কোপ যোগ করুন এবং আপনার ক্লায়েন্ট কনফিগার করুন (ঐচ্ছিক) এর অধীনে সুযোগ যোগ করুন ক্লিক করুন।
  5. Save এ ক্লিক করুন।

আপনার অ্যান্ড্রয়েড অ্যাপে অ্যাপ ফ্লিপ প্রয়োগ করুন

অ্যাপ ফ্লিপ বাস্তবায়ন করতে, Google থেকে একটি গভীর লিঙ্ক গ্রহণ করতে আপনাকে আপনার অ্যাপে ব্যবহারকারী অনুমোদন কোড পরিবর্তন করতে হবে।

OAuth-ভিত্তিক অ্যাপ ফ্লিপ লিঙ্কিং (অ্যাপ ফ্লিপ) আপনার অ্যান্ড্রয়েড অ্যাপকে Google অ্যাকাউন্ট লিঙ্কিং প্রবাহে সন্নিবেশিত করে। একটি ঐতিহ্যগত অ্যাকাউন্ট লিঙ্কিং প্রবাহের জন্য ব্যবহারকারীকে ব্রাউজারে তাদের শংসাপত্রগুলি প্রবেশ করতে হবে। অ্যাপ ফ্লিপের ব্যবহার আপনার অ্যান্ড্রয়েড অ্যাপে ব্যবহারকারীর সাইন-ইন স্থগিত করে, যা আপনাকে বিদ্যমান অনুমোদনের সুবিধা নিতে দেয়। ব্যবহারকারী যদি আপনার অ্যাপে সাইন ইন করে থাকেন, তাহলে তাদের অ্যাকাউন্ট লিঙ্ক করার জন্য তাদের শংসাপত্রগুলি পুনরায় প্রবেশ করতে হবে না। আপনার অ্যান্ড্রয়েড অ্যাপে অ্যাপ ফ্লিপ প্রয়োগ করতে ন্যূনতম পরিমাণ কোড পরিবর্তন প্রয়োজন।

এই নথিতে, আপনি অ্যাপ ফ্লিপ সমর্থন করার জন্য আপনার Android অ্যাপটি কীভাবে পরিবর্তন করবেন তা শিখবেন।

নমুনা চেষ্টা করুন

অ্যাপ ফ্লিপ লিঙ্কিং নমুনা অ্যাপটি Android-এ একটি অ্যাপ ফ্লিপ-সামঞ্জস্যপূর্ণ অ্যাকাউন্ট লিঙ্কিং ইন্টিগ্রেশন প্রদর্শন করে। আপনি Google মোবাইল অ্যাপ থেকে একটি ইনকামিং অ্যাপ ফ্লিপ অভিপ্রায়ে কীভাবে প্রতিক্রিয়া জানাবেন তা যাচাই করতে এই অ্যাপটি ব্যবহার করতে পারেন।

নমুনা অ্যাপটি Android এর জন্য অ্যাপ ফ্লিপ টেস্ট টুলের সাথে একীভূত করার জন্য পূর্ব-কনফিগার করা হয়েছে, যা আপনি Google-এর সাথে অ্যাকাউন্ট লিঙ্কিং কনফিগার করার আগে অ্যাপ ফ্লিপের সাথে আপনার Android অ্যাপের একীকরণ যাচাই করতে ব্যবহার করতে পারেন। যখন অ্যাপ ফ্লিপ সক্ষম থাকে তখন এই অ্যাপটি Google মোবাইল অ্যাপের দ্বারা ট্রিগার করা অভিপ্রায়কে অনুকরণ করে।

কিভাবে এটা কাজ করে

একটি অ্যাপ ফ্লিপ ইন্টিগ্রেশন করার জন্য নিম্নলিখিত পদক্ষেপগুলি প্রয়োজন:

  1. Google অ্যাপ চেক করে যে আপনার অ্যাপটি ডিভাইসে ইনস্টল করা আছে কিনা তার প্যাকেজের নাম ব্যবহার করে।
  2. ইনস্টল করা অ্যাপটি সঠিক অ্যাপ তা যাচাই করতে Google অ্যাপ প্যাকেজ স্বাক্ষর চেক ব্যবহার করে।
  3. Google অ্যাপ আপনার অ্যাপে একটি মনোনীত কার্যকলাপ শুরু করার একটি অভিপ্রায় তৈরি করে। এই অভিপ্রায় লিঙ্ক করার জন্য প্রয়োজনীয় অতিরিক্ত ডেটা অন্তর্ভুক্ত করে। অ্যান্ড্রয়েড ফ্রেমওয়ার্কের মাধ্যমে এই অভিপ্রায় সমাধান করে আপনার অ্যাপ অ্যাপ ফ্লিপ সমর্থন করে কিনা তাও এটি পরীক্ষা করে।
  4. আপনার অ্যাপ যাচাই করে যে অনুরোধটি Google অ্যাপ থেকে আসছে। এটি করতে, আপনার অ্যাপ প্যাকেজ স্বাক্ষর এবং প্রদত্ত ক্লায়েন্ট আইডি পরীক্ষা করে।
  5. আপনার অ্যাপ আপনার OAuth 2.0 সার্ভার থেকে একটি অনুমোদন কোড অনুরোধ করে। এই প্রবাহের শেষে, এটি Google অ্যাপে একটি অনুমোদন কোড বা একটি ত্রুটি ফেরত দেয়।
  6. Google অ্যাপ ফলাফল পুনরুদ্ধার করে এবং অ্যাকাউন্ট লিঙ্ক করা চালিয়ে যায়। যদি একটি অনুমোদন কোড প্রদান করা হয়, টোকেন বিনিময় সার্ভার থেকে সার্ভার ঘটবে, একইভাবে এটি ব্রাউজার-ভিত্তিক OAuth লিঙ্কিং প্রবাহে করে।

অ্যাপ ফ্লিপ সমর্থন করতে আপনার অ্যান্ড্রয়েড অ্যাপ পরিবর্তন করুন

অ্যাপ ফ্লিপ সমর্থন করতে, আপনার Android অ্যাপে নিম্নলিখিত কোড পরিবর্তন করুন:

  1. আপনার AndroidManifest.xml ফাইলে একটি অ্যাকশন স্ট্রিং সহ একটি <intent-filter> যোগ করুন যা অ্যাপ ফ্লিপ ইন্টেন্ট ফিল্ডে আপনার প্রবেশ করা মানটির সাথে মেলে।

    <activity android:name="AuthActivity">
      <!-- Handle the app flip intent -->
      <intent-filter>
        <action android:name="INTENT_ACTION_FROM_CONSOLE"/>
        <category android:name="android.intent.category.DEFAULT"/>
      </intent-filter>
    </activity>
    
  2. কলিং অ্যাপের স্বাক্ষর যাচাই করুন।

    private fun verifyFingerprint(
            expectedPackage: String,
            expectedFingerprint: String,
            algorithm: String
    ): Boolean {
    
        callingActivity?.packageName?.let {
            if (expectedPackage == it) {
                val packageInfo =
                    packageManager.getPackageInfo(it, PackageManager.GET_SIGNATURES)
                val signatures = packageInfo.signatures
                val input = ByteArrayInputStream(signatures[0].toByteArray())
    
                val certificateFactory = CertificateFactory.getInstance("X509")
                val certificate =
                    certificateFactory.generateCertificate(input) as X509Certificate
                val md = MessageDigest.getInstance(algorithm)
                val publicKey = md.digest(certificate.encoded)
                val fingerprint = publicKey.joinToString(":") { "%02X".format(it) }
    
                return (expectedFingerprint == fingerprint)
            }
        }
        return false
    }
    
  3. উদ্দেশ্য প্যারামিটার থেকে ক্লায়েন্ট আইডি বের করুন এবং যাচাই করুন যে ক্লায়েন্ট আইডি প্রত্যাশিত মানের সাথে মেলে।

    private const val EXPECTED_CLIENT = "<client-id-from-actions-console>"
    private const val EXPECTED_PACKAGE = "<google-app-package-name>"
    private const val EXPECTED_FINGERPRINT = "<google-app-signature>"
    private const val ALGORITHM = "SHA-256"
    ...
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    
        val clientId = intent.getStringExtra("CLIENT_ID")
    
        if (clientId == EXPECTED_CLIENT &&
            verifyFingerprint(EXPECTED_PACKAGE, EXPECTED_FINGERPRINT, ALGORITHM)) {
    
            // ...authorize the user...
        }
    }
    
  4. সফল অনুমোদনের পরে, ফলাফলের অনুমোদন কোডটি Google-এ ফেরত দিন।

    // Successful result
    val data = Intent().apply {
        putExtra("AUTHORIZATION_CODE", authCode)
    }
    setResult(Activity.RESULT_OK, data)
    finish()
    
  5. যদি একটি ত্রুটি ঘটেছে, পরিবর্তে একটি ত্রুটি ফলাফল ফেরত.

    // Error result
    val error = Intent().apply {
        putExtra("ERROR_TYPE", 1)
        putExtra("ERROR_CODE", 1)
        putExtra("ERROR_DESCRIPTION", "Invalid Request")
    }
    setResult(-2, error)
    finish()
    

লঞ্চের উদ্দেশ্য বিষয়বস্তু

অ্যান্ড্রয়েড অভিপ্রায় যা আপনার অ্যাপটি চালু করে তাতে নিম্নলিখিত ক্ষেত্রগুলি অন্তর্ভুক্ত রয়েছে:

  • CLIENT_ID ( String ): Google client_id আপনার অ্যাপের অধীনে নিবন্ধিত।
  • SCOPE ( String[] ): অনুরোধ করা স্কোপের একটি তালিকা।
  • REDIRECT_URI ( String ): পুনঃনির্দেশ URL।

প্রতিক্রিয়া তথ্য বিষয়বস্তু

Google অ্যাপে ফেরত আসা ডেটা setResult() কল করে আপনার অ্যাপে সেট করা হয়েছে। এই তথ্য নিম্নলিখিত অন্তর্ভুক্ত:

  • AUTHORIZATION_CODE ( String ): অনুমোদন কোড মান।
  • ফলাফল int resultCode : প্রক্রিয়াটির সাফল্য বা ব্যর্থতার সাথে যোগাযোগ করে এবং নিম্নলিখিত মানগুলির মধ্যে একটি গ্রহণ করে:
    • Activity.RESULT_OK .RESULT_OK : সাফল্য নির্দেশ করে; একটি অনুমোদন কোড ফিরে আসে।
    • Activity.RESULT_CANCELLED . RESULT_CANCELLED : সংকেত যে ব্যবহারকারী প্রক্রিয়াটি বাতিল করেছে৷ এই ক্ষেত্রে, Google অ্যাপ আপনার অনুমোদন URL ব্যবহার করে অ্যাকাউন্ট লিঙ্ক করার চেষ্টা করবে।
    • -2 : ইঙ্গিত করে যে একটি ত্রুটি ঘটেছে। বিভিন্ন ধরণের ত্রুটি নীচে বর্ণনা করা হয়েছে।
  • ERROR_TYPE ( int ): ত্রুটির ধরন, যা নিম্নলিখিত মানগুলির মধ্যে একটি নেয়:
    • 1 : পুনরুদ্ধারযোগ্য ত্রুটি: Google অ্যাপ অনুমোদন URL ব্যবহার করে অ্যাকাউন্ট লিঙ্ক করার চেষ্টা করবে।
    • 2 : পুনরুদ্ধারযোগ্য ত্রুটি: Google অ্যাপ অ্যাকাউন্ট লিঙ্ক করা বাতিল করে।
    • 3 : অবৈধ বা অনুপস্থিত অনুরোধ পরামিতি.
  • ERROR_CODE ( int ): ত্রুটির প্রকৃতির প্রতিনিধিত্বকারী একটি পূর্ণসংখ্যা। প্রতিটি ত্রুটি কোডের অর্থ কী তা দেখতে, ত্রুটি কোডের সারণীটি পড়ুন।
  • ERROR_DESCRIPTION ( String , ঐচ্ছিক): মানব-পাঠযোগ্য স্থিতি বার্তা ত্রুটি বর্ণনা করে।

AUTHORIZATION_CODE-এর জন্য একটি মান প্রত্যাশিত যখন AUTHORIZATION_CODE resultCode == Activity.RESULT_OK । অন্য সব ক্ষেত্রে, AUTHORIZATION_CODE এর মান খালি থাকা দরকার। যদি resultCode == -2 হয়, তাহলে ERROR_TYPE মানটি জনবহুল হবে বলে আশা করা হচ্ছে।

ত্রুটি কোডের সারণী

নীচের সারণী বিভিন্ন ত্রুটি কোড দেখায় এবং প্রতিটি একটি পুনরুদ্ধারযোগ্য বা পুনরুদ্ধারযোগ্য ত্রুটি কিনা:

ভুল সংকেত অর্থ পুনরুদ্ধারযোগ্য পুনরুদ্ধারযোগ্য
1 INVALID_REQUEST
2 NO_INTERNET_CONNECTION
3 OFFLINE_MODE_ACTIVE
4 CONNECTION_TIMEOUT
5 INTERNAL_ERROR
6 AUTHENTICATION_SERVICE_UNAVAILABLE
8 CLIENT_VERIFICATION_FAILED
9 INVALID_CLIENT
10 INVALID_APP_ID
11 INVALID_REQUEST
12 AUTHENTICATION_SERVICE_UNKNOWN_ERROR
13 AUTHENTICATION_DENIED_BY_USER
14 CANCELLED_BY_USER
15 FAILURE_OTHER
16 USER_AUTHENTICATION_FAILED

সমস্ত ত্রুটি কোডের জন্য, যথাযথ ফলব্যাক ট্রিগার করা হয়েছে তা নিশ্চিত করতে আপনাকে অবশ্যই setResult এর মাধ্যমে ত্রুটির ফলাফল ফেরত দিতে হবে।

আপনার ডিভাইসে অ্যাপ ফ্লিপ পরীক্ষা করুন

এখন যেহেতু আপনি একটি অ্যাকশন তৈরি করেছেন এবং কনসোলে এবং আপনার অ্যাপে অ্যাপ ফ্লিপ কনফিগার করেছেন, আপনি আপনার মোবাইল ডিভাইসে অ্যাপ ফ্লিপ পরীক্ষা করতে পারেন। অ্যাপ ফ্লিপ পরীক্ষা করতে আপনি Google Assistant অ্যাপ বা Google Home অ্যাপ ব্যবহার করতে পারেন।

অ্যাসিস্ট্যান্ট অ্যাপ থেকে অ্যাপ ফ্লিপ পরীক্ষা করতে, এই ধাপগুলি অনুসরণ করুন:

  1. অ্যাকশন কনসোলে যান এবং আপনার প্রকল্প নির্বাচন করুন।
  2. শীর্ষ নেভিগেশন পরীক্ষা ক্লিক করুন.
  3. Assistant অ্যাপ থেকে অ্যাকাউন্ট লিঙ্কিং ফ্লো ট্রিগার করুন:
    1. Google Assistant অ্যাপ খুলুন।
    2. সেটিংস এ ক্লিক করুন।
    3. সহকারী ট্যাবে, হোম কন্ট্রোল ক্লিক করুন।
    4. Add(+) এ ক্লিক করুন।
    5. প্রদানকারীদের তালিকা থেকে আপনার অ্যাকশন নির্বাচন করুন। এটি তালিকায় "[পরীক্ষা]" এর সাথে প্রিফিক্স করা হবে। আপনি যখন তালিকা থেকে আপনার [পরীক্ষা] অ্যাকশন নির্বাচন করেন, তখন এটি আপনার অ্যাপ খুলবে।
    6. যাচাই করুন যে আপনার অ্যাপ চালু হয়েছে এবং আপনার অনুমোদন প্রবাহ পরীক্ষা করা শুরু করুন।

হোম অ্যাপ থেকে অ্যাপ ফ্লিপ পরীক্ষা করতে, এই ধাপগুলি অনুসরণ করুন:

  1. অ্যাকশন কনসোলে যান এবং আপনার প্রকল্প নির্বাচন করুন।
  2. শীর্ষ নেভিগেশন পরীক্ষা ক্লিক করুন.
  3. Home অ্যাপ থেকে অ্যাকাউন্ট লিঙ্কিং ফ্লো ট্রিগার করুন:
    1. Google Home অ্যাপ খুলুন।
    2. + বোতামে ক্লিক করুন।
    3. ডিভাইস সেট আপ ক্লিক করুন.
    4. ক্লিক করুন কিছু ইতিমধ্যে সেট আপ করেছেন?
    5. প্রদানকারীদের তালিকা থেকে আপনার স্মার্ট হোম অ্যাকশন নির্বাচন করুন। এটি তালিকায় "[পরীক্ষা]" এর সাথে প্রিফিক্স করা হবে। আপনি যখন তালিকা থেকে আপনার [পরীক্ষা] অ্যাকশন নির্বাচন করেন, তখন এটি আপনার অ্যাপ খুলবে।
    6. যাচাই করুন যে আপনার অ্যাপ চালু হয়েছে এবং আপনার অনুমোদন প্রবাহ পরীক্ষা করা শুরু করুন।