Google Sign-In را در برنامه Android خود ادغام کنید
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
برای ادغام Google Sign-In در برنامه Android خود، Google Sign-In را پیکربندی کنید و دکمهای را به طرحبندی برنامه خود اضافه کنید که جریان ورود به سیستم را شروع میکند.
قبل از شروع
یک پروژه Google API Console را پیکربندی کنید و پروژه Android Studio خود را راه اندازی کنید.
Google Sign-in و شیء GoogleSignInClient را پیکربندی کنید
در روش onCreate فعالیت ورود به سیستم خود، Google Sign-In را پیکربندی کنید تا اطلاعات کاربر مورد نیاز برنامه شما را درخواست کند. به عنوان مثال، برای پیکربندی Google Sign-In برای درخواست شناسه و اطلاعات اولیه نمایه کاربران، یک شیء GoogleSignInOptions با پارامتر DEFAULT_SIGN_IN ایجاد کنید. برای درخواست آدرس ایمیل کاربران نیز، شیء GoogleSignInOptions را با گزینه requestEmail ایجاد کنید.
// Configure sign-in to request the user's ID, email address, and basic// profile. ID and basic profile are included in DEFAULT_SIGN_IN.GoogleSignInOptionsgso=newGoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestEmail().build();
اگر برای دسترسی به Google API نیاز به درخواست دامنه های اضافی دارید، آنها را با requestScopes مشخص کنید. برای بهترین تجربه کاربری، هنگام ورود به سیستم، فقط محدوده هایی را درخواست کنید که برای عملکرد حداقلی برنامه شما لازم است. هر دامنه اضافی را فقط در صورت نیاز درخواست کنید تا کاربران شما صفحه رضایت را در چارچوب عملی که انجام دادهاند ببینند. به درخواست دامنه های اضافی مراجعه کنید.
سپس، همچنین در روش onCreate فعالیت ورود به سیستم، یک شی GoogleSignInClient با گزینه هایی که مشخص کرده اید ایجاد کنید.
// Build a GoogleSignInClient with the options specified by gso.mGoogleSignInClient=GoogleSignIn.getClient(this,gso);
یک کاربر وارد شده موجود را بررسی کنید
در روش onStart فعالیت خود، بررسی کنید که آیا کاربری قبلاً با Google وارد برنامه شما شده است یا خیر.
// Check for existing Google Sign In account, if the user is already signed in// the GoogleSignInAccount will be non-null.GoogleSignInAccountaccount=GoogleSignIn.getLastSignedInAccount(this);updateUI(account);
اگر GoogleSignIn.getLastSignedInAccount یک شی GoogleSignInAccount را برگرداند (به جای null )، کاربر قبلاً با Google وارد برنامه شما شده است. رابط کاربری خود را بر این اساس بهروزرسانی کنید—یعنی دکمه ورود به سیستم را پنهان کنید، فعالیت اصلی خود را راه اندازی کنید یا هر چیزی که برای برنامه شما مناسب است.
اگر GoogleSignIn.getLastSignedInAccount را null برگرداند، کاربر هنوز با Google وارد برنامه شما نشده است. رابط کاربری خود را برای نمایش دکمه ورود به سیستم Google به روز کنید.
دکمه ورود به سیستم Google را به برنامه خود اضافه کنید
اختیاری : اگر به جای ارائه دارایی های دکمه ورود به سیستم خود، از گرافیک دکمه ورود به سیستم پیش فرض استفاده می کنید، می توانید اندازه دکمه را با روش setSize سفارشی کنید.
// Set the dimensions of the sign-in button.SignInButtonsignInButton=findViewById(R.id.sign_in_button);signInButton.setSize(SignInButton.SIZE_STANDARD);
در اکتیویتی اندروید (مثلاً در روش onCreate )، OnClickListener دکمه خود را ثبت کنید تا با کلیک روی کاربر وارد سیستم شوید:
در روش onClick فعالیت، با ایجاد یک هدف ورود به سیستم با متد getSignInIntent ، و شروع هدف با startActivityForResult ، ضربه های دکمه ورود به سیستم را مدیریت کنید.
شروع intent از کاربر می خواهد که یک حساب Google برای ورود به سیستم انتخاب کند. اگر دامنههایی فراتر از profile ، email و openid درخواست کردهاید، از کاربر خواسته میشود به منابع درخواستی دسترسی دهد.
پس از ورود کاربر به سیستم، می توانید یک شی GoogleSignInAccount برای کاربر در روش onActivityResult فعالیت دریافت کنید.
همچنین میتوانید آدرس ایمیل کاربر را با getEmail ، شناسه Google کاربر (برای استفاده در سمت سرویس گیرنده) با getId و یک نشانه شناسه برای کاربر با getIdToken دریافت کنید. اگر نیاز دارید کاربر وارد شده فعلی را به یک سرور باطن ارسال کنید، رمز ID را به سرور باطن خود ارسال کنید و رمز را در سرور تأیید کنید.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Integrate Google Sign-In into Your Android App\n\n| **Warning:**\n|\n| **The Google Sign-In for Android API is outdated and no longer supported.**\n| To ensure the continued security and usability of your app, [migrate your Sign in with\n| Google implementation to Credential Manager](/identity/sign-in/credential-manager-siwg) today. Credential Manager\n| supports passkey, password, and federated identity authentication (such as\n| Sign-in with Google), stronger security, and a more consistent user\n| experience.\n|\n| **For Wear developers:** Credential Manager will be supported in Wear OS\n| 5.1 and later on selected watches. Developers actively supporting Wear OS 3, 4\n| and 5.0 devices with Sign in with Google should continue using Google Sign-in\n| for Android for your Wear applications. Sign in with Google support will be\n| available on Credential Manager APIs for these versions of WearOS at a later\n| date.\n\nTo integrate Google Sign-In into your Android app, configure Google Sign-In and\nadd a button to your app's layout that starts the sign-in flow.\n\nBefore you begin\n----------------\n\nConfigure a Google API Console project and set up your Android Studio project.\n\nConfigure Google Sign-in and the GoogleSignInClient object\n----------------------------------------------------------\n\n1. In your sign-in activity's `onCreate` method, configure Google Sign-In to\n request the user data required by your app. For example, to configure\n Google Sign-In to request users' ID and basic profile information, create a\n [`GoogleSignInOptions`](https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInOptions.Builder.html#GoogleSignInOptions.Builder())\n object with the `DEFAULT_SIGN_IN` parameter. To request users' email\n addresses as well, create the `GoogleSignInOptions` object with the\n `requestEmail` option.\n\n ```carbon\n // Configure sign-in to request the user's ID, email address, and basic\n // profile. ID and basic profile are included in DEFAULT_SIGN_IN.\n GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)\n .requestEmail()\n .build();\n ```\n\n If you need to request additional scopes to access Google APIs, specify them\n with [`requestScopes`](https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInOptions.Builder.html#requestScopes(com.google.android.gms.common.api.Scope,%20com.google.android.gms.common.api.Scope...)).\n For the best user experience, on sign-in, only request the scopes that are\n required for your app to minimally function. Request any additional scopes\n only when you need them, so that your users see the consent screen in the\n context of an action they performed.\n See [Requesting Additional Scopes](https://developers.google.com/identity/sign-in/android/additional-scopes).\n2. Then, also in your sign-in activity's `onCreate` method, create a\n `GoogleSignInClient` object with the options you specified.\n\n ```scilab\n // Build a GoogleSignInClient with the options specified by gso.\n mGoogleSignInClient = GoogleSignIn.getClient(this, gso);\n ```\n\nCheck for an existing signed-in user\n------------------------------------\n\nIn your activity's `onStart` method, check if a user has already signed in to\nyour app with Google. \n\n```scilab\n// Check for existing Google Sign In account, if the user is already signed in\n// the GoogleSignInAccount will be non-null.\nGoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);\nupdateUI(account);\n```\n\nIf `GoogleSignIn.getLastSignedInAccount` returns a `GoogleSignInAccount` object\n(rather than `null`), the user has already signed in to your app with Google.\nUpdate your UI accordingly---that is, hide the sign-in button, launch your\nmain activity, or whatever is appropriate for your app.\n\nIf `GoogleSignIn.getLastSignedInAccount` returns `null`, the user has not yet\nsigned in to your app with Google. Update your UI to display the Google Sign-in\nbutton.\n| **Note:** If you need to detect changes to a user's auth state that happen outside your app, such as access token or ID token revocation, or to perform cross-device sign-in, you might also call `GoogleSignInClient.silentSignIn` when your app starts.\n\nAdd the Google Sign-in button to your app\n-----------------------------------------\n\n1.\n Add the [`SignInButton`](https://developers.google.com/android/reference/com/google/android/gms/common/SignInButton)\n in your application's layout:\n\n \u003ccom.google.android.gms.common.SignInButton\n android:id=\"@+id/sign_in_button\"\n android:layout_width=\"wrap_content\"\n android:layout_height=\"wrap_content\" /\u003e\n\n2. **Optional** : If you are using the default sign-in button graphic instead of\n providing your own sign-in button assets, you can customize the button's\n size with the [`setSize`](https://developers.google.com/android/reference/com/google/android/gms/common/SignInButton.html#setSize(int))\n method.\n\n ```scilab\n // Set the dimensions of the sign-in button.\n SignInButton signInButton = findViewById(R.id.sign_in_button);\n signInButton.setSize(SignInButton.SIZE_STANDARD);\n ```\n3. In the Android activity (for example, in the `onCreate` method), register\n your button's `OnClickListener` to sign in the user when clicked:\n\n findViewById(R.id.sign_in_button).setOnClickListener(this);\n\nStart the sign-in flow\n----------------------\n\n1.\n In the activity's `onClick` method, handle sign-in button taps by creating a\n sign-in intent with the [`getSignInIntent`](https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInClient#getSignInIntent())\n method, and starting the intent with `startActivityForResult`.\n\n @Override\n public void onClick(View v) {\n switch (v.getId()) {\n case R.id.sign_in_button:\n signIn();\n break;\n // ...\n }\n }\n\n ```scdoc\n private void signIn() {\n Intent signInIntent = mGoogleSignInClient.getSignInIntent();\n startActivityForResult(signInIntent, RC_SIGN_IN);\n }\n ```\n\n Starting the intent prompts the user to select a Google Account to sign in\n with. If you requested scopes beyond `profile`, `email`, and `openid`, the\n user is also prompted to grant access to the requested resources.\n2. After the user signs in, you can get a [`GoogleSignInAccount`](https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInAccount.html)\n object for the user in the activity's `onActivityResult` method.\n\n ```transact-sql\n @Override\n public void onActivityResult(int requestCode, int resultCode, Intent data) {\n super.onActivityResult(requestCode, resultCode, data);\n\n // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);\n if (requestCode == RC_SIGN_IN) {\n // The Task returned from this call is always completed, no need to attach\n // a listener.\n Task\u003cGoogleSignInAccount\u003e task = GoogleSignIn.getSignedInAccountFromIntent(data);\n handleSignInResult(task);\n }\n }\n ```\n\n The `GoogleSignInAccount` object contains information about the signed-in\n user, such as the user's name. \n\n ```css+lasso\n private void handleSignInResult(Task\u003cGoogleSignInAccount\u003e completedTask) {\n try {\n GoogleSignInAccount account = completedTask.getResult(ApiException.class);\n\n // Signed in successfully, show authenticated UI.\n updateUI(account);\n } catch (ApiException e) {\n // The ApiException status code indicates the detailed failure reason.\n // Please refer to the GoogleSignInStatusCodes class reference for more information.\n Log.w(TAG, \"signInResult:failed code=\" + e.getStatusCode());\n updateUI(null);\n }\n }\n ```\n\n You can also get the user's email address with [`getEmail`](https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInAccount.html#getEmail()),\n the user's Google ID (for client-side use) with [`getId`](https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInAccount.html#getId()),\n and an ID token for the user with [`getIdToken`](https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInAccount.html#getIdToken()).\n If you need to pass the currently signed-in user to a backend server,\n [send the ID token to your backend server](https://developers.google.com/identity/sign-in/android/backend-auth)\n and validate the token on the server."]]