![ورود در اپلیکیشن اندروید از طریق گوگل پلاس](/uploads/blog_30312_0.jpg)
ورود در اپلیکیشن اندروید از طریق گوگل پلاس
سیستم عامل اندروید این امکان را در اختیار توسعه دهندگان قرار داده که گوگل پلاس را درون اپلیکیشن های خود و تنها با چند گام ساده یکپارچه سازی نمایند. اتصال گوگل پلاس به اپلیکیشن بسادگی صورت می پذیرد و می توانید از طریق Sign In جزئیاتی از اطلاعات کاربر را نمایش دهید.
در این مطلب پس از اتصال به گوگل پلاس، اطلاعات کاربر نظیر نام، ایمیل، عکس پروفایل و غیره را نمایش خواهیم داد. در صورت ورود موفق، امکان نمایش سایر اطلاعات از قبیل لیستی از حلقه ها، اشتراگ گذاری پست، لیست دوستان و غیره نیز امکان پذیر است.
گوگل پلاس امکان دریافت اطلاعات کاربر را در اختیار قرار داده و از طریق فرآیند ثبت نام می توانید جزئیات بیشتری از کاربر را دریافت و در صورت لزوم به راحتی اطلاعات پروفایل را مورد استفاده قرار دهید.
پیش از پیاده سازی گوگل پلاس باید SDK Manager را بررسی کنید که Google play services بر روی آن نصب باشد، در صورتی که نصب نیست، آنرا نصب کرده و به آخرین نسخه ارتقا دهید.
برای ساخت این اپلیکیشن ساده باید یک فایل google-services.json بسازیم.
برای این کار باید گام های زیر را دنبال کنید:
اپلیکیشن را رجیستر کرده و یک فایل google-services.json تولید کنید:
یک پروژه جدید در Google Developer console بسازید و پس از دنبال کردن تمامی جزئیات کار، فایل google-services.json را تولید کنید و در اپلیکیشن خود در اندروید استودیو مورد استفاده قرار دهید.
1. در اندروید استودیو اپلیکیشنی به نام GooglePlusExampleAndroid بسازید.
2. به Google Developer Console رفته و پس از انتخاب Android، نامی برای پروژه و پکیج انتخاب کنید. همان نام پکیجی را که برای اپلیکیشن در اندروید استودیو استفاده شد، بکار ببرید.
3. پس از این مرحله Continue را برای انتخاب و پیکربندی سرویس ها بزنید. در این مرحله یک فینگر پرینت SHA-1 از شما خواسته می شود که باید با استفاده از ابزار Java Key آن را تولید کرد.
4. ترمینال را باز کرده و دستور زیر را برای تولید فینگر پرینت SHA-1 در ویندوز به اجرا درآورید:
Command: keytool -list -v -keystore “%USERPROFILE%\.android\debug.keystore” -alias androiddebugkey -storepass android -keypass android
با این کار فینگر پرینت موردنظر تولید شد و می توانید به صورت زیر از آن در Google Developers Console استفاده کنید.
5. دکمه Enable Google Sign In را زده و سپس بر روی generate Configuration file کلیک کنید.
6. با این کار صفحه بعدی برای فایل google-services.json به نمایش درخواهد آمد.
7. این فایل را دانلود کرده و آن را در دایرکتوری اپلیکیشن کپی کنید. این فایل شامل جزئیات پیکربندی، کلیدها و آیدنتیفایرهاست. حال که عملیات مربوط به Google Developers Console انجام شد، کار بر روی اپلیکیشن را ادامه می دهیم.
افزودن وابستگی ها
در زیر وابستگی های موردنیاز برای فایل build.gradle پروژه و اپلیکیشن اضافه می شود.
فایل build.gradle برای پروژه:
کد زیر را اضافه کنید
dependencies { classpath 'com.google.gms:google-services:3.0.0' }
فایل build.gradle برای اپلیکیشن:
وابستگی زیر را اضافه کنید
dependencies {
compile 'com.google.android.gms:play-services-auth:9.2.1'
compile "com.squareup.picasso:picasso:2.4.0"
}
apply plugin: 'com.google.gms.google-services'
از لایبرری Picasso برای دریافت عکس پروفایل استفاده شده است.
AndroidManifest.xml:
مجوز موردنیاز برای دسترسی به اینترنت اضافه شده است.
<uses-permission android:name="android.permission.INTERNET" />
مثال به همراه کد: در این مثال قصد داریم اپلیکیشنی را بسازیم که عکس پروفایل، نام، ایمیل و سایر اطلاعات مربوط به کاربر را نمایش می دهد.
Activity_main.xml: این فایل اصلی لی اوت است که شامل دکمه Sign In گوگل پلاس، دکمه Logout، دو TextView که یکی برای نمایش نام و دیگری برای نمایش ایمیل است و یک ImageView برای عکس پروفایل می باشد.
اضافه کردن کدهای موردنیاز
<LinearLayout
android:id="@+id/ll_Profile"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:orientation="horizontal"
android:weightSum="3"
android:visibility="gone">
<ImageView
android:id="@+id/iv_ProfilePic"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:orientation="vertical"
android:layout_weight="2" >
<TextView
android:id="@+id/tv_Name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp"
android:textSize="20dp" />
<TextView
android:id="@+id/tv_Email"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp"
android:textSize="18dp" />
</LinearLayout>
</LinearLayout>
<com.google.android.gms.common.SignInButton
android:id="@+id/btn_sign_in"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"/>
<Button
android:id="@+id/btn_sign_out"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/btn_logout_from_google"
android:visibility="gone"
android:layout_marginBottom="10dp"
android:background="@color/colorPrimary"
android:textColor="#ffffff"/>
در این مرحله ویژگی های تمامی این ویجت ها را در اکتیویتی اصلی پیاده سازی می کنیم.
MainActivity.java:
این MainActivity است که GoogleApiClient.OnConnectionFailedListener را پیاده سازی می کند و یک رفرنس از تمامی ویجت ها را گرفته و سایر ویژگی ها را یکپارچه سازی می کنیم.
Initialize:
private static final int RC_SIGN_IN = 007;
private GoogleApiClient mGoogleApiClient;
private ProgressDialog mProgressDialog;
private SignInButton btn_SignIN;
private Button btn_SignOut;
private LinearLayout ll_profileLayout;
private ImageView iv_profilePic;
private TextView tv_Name, tv_Email;
کد را در {…}()onCreate اضافه کنید:
رفرنسی از تمامی ویجت ها را گرفته و بر روی دکمه ها لیسنر بگذارید.
btn_SignIN = (SignInButton) findViewById(R.id.btn_sign_in);
btn_SignOut = (Button) findViewById(R.id.btn_sign_out);
ll_profileLayout = (LinearLayout) findViewById(R.id.ll_Profile);
iv_profilePic = (ImageView) findViewById(R.id.iv_ProfilePic);
tv_Name = (TextView) findViewById(R.id.tv_Name);
tv_Email = (TextView) findViewById(R.id.tv_Email);
btn_SignIN.setOnClickListener(this);
btn_SignOut.setOnClickListener(this);
در این مرحله ویژگی های موردنظر خود برای شخصی سازی دکمه گوگل پلاس را تعیین کنید.
btn_SignIN.setSize(SignInButton.SIZE_STANDARD);
btn_SignIN.setScopes(gso.getScopeArray());
در گام بعدی در این کد یک نمونه اولیه از GoogleApiClient می سازیم و کد موردنیاز برای این کار را اضافه می کنیم.
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.build();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this, this)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
اضافه کردن کد برای Sign In
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, RC_SIGN_IN);
اضافه کردن کد برای Sign Out
Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(
new ResultCallback<Status>() {
@Override
public void onResult(Status status) {
updateUI(false);
}
});
در این مرحله یک متد handleSignInResult می سازیم که در صورت ورود موفقیت آمیز کاربر، رابط کاربری تصدیق شده را نمایش می دهد.
کد موردنیاز را در داخل متد اضافه کنید.
private void handleSignInResult(GoogleSignInResult result) {
Log.d(TAG, "handleSignInResult:" + result.isSuccess());
if (result.isSuccess()) {
GoogleSignInAccount acct = result.getSignInAccount();
Log.e(TAG, "display name: " + acct.getDisplayName());
String user_Name = acct.getDisplayName();
String user_profilePic = acct.getPhotoUrl().toString();
String user_Email = acct.getEmail();
Log.e(TAG, "Name: " + user_Name + ", user_Email: " + user_Email
+ ", Image: " + user_profilePic);
tv_Name.setText(user_Name);
tv_Email.setText(user_Email);
Picasso.with(getApplicationContext()).load(user_profilePic).into(iv_profilePic);
updateUI(true);
} else {
updateUI(false);
}
}
Picasso برای واکشی عکس پروفایل کاربر مورد استفاده قرار می گیرد.
در متد ()onStart نیز چندین ویژگی اضافه می کنیم که برای چک کردن کش Google Sign In مورد استفاده قرار می گیرند.
کد موردنیاز را در داخل متد اضافه کنید.
OptionalPendingResult<GoogleSignInResult> opr = Auth.GoogleSignInApi.silentSignIn(mGoogleApiClient);
if (opr.isDone()) {
Log.d(TAG, "Got cached sign-in");
GoogleSignInResult result = opr.get();
handleSignInResult(result);
} else {
showProgressDialog();
opr.setResultCallback(new ResultCallback<GoogleSignInResult>() {
@Override
public void onResult(GoogleSignInResult googleSignInResult) {
hideProgressDialog();
handleSignInResult(googleSignInResult);
}
});
}
در این اکتیویتی، متد ()updateUI برای مخفی سازی و نمایش دکمه ها، مطابق با ورود و خروج کاربر مورد استفاده قرار گرفته و رابط کاربری آپدیت می شود.
خروجی:
جمع بندی:
در این مطلب یک نمونه ساده از پیاده سازی گوگل پلاس در اپلیکیشن اندروید را مشاهده کردید. مراحلی مانند تولید فایل google-services.json برای و استفاده از Google Play services API که برای یکپارچه سازی اپلیکیشن گوگل موردنیاز است را مشاهده کردید. با این کار به راحتی می توان وارد شد و اطلاعات پروفایل کاربر را در اپلیکیشن دریافت کرد.