Аутентификация с помощью GitHub на Android
GitHub — это место, где более 65 миллионов разработчиков вместе формируют будущее программного обеспечения. Вносите свой вклад в сообщество разработчиков ПО с открытым исходным кодом, управляйте своими репозиториями Git, просматривайте код как профессионал, отслеживайте ошибки и функции, повышайте эффективность рабочих процессов CI/CD и DevOps и защищайте код перед его фиксацией. Итак, в этой статье мы собираемся обсудить, как пройти аутентификацию с помощью GitHub в вашем приложении для Android с помощью аутентификации пользователя Firebase.
Шаги для аутентификации пользователя Firebase с использованием GitHub
Шаг 1:
Создайте новый проект в студии Android или откройте любой существующий проект, с помощью которого вы хотите аутентифицировать пользователя с помощью GitHub, и добавьте firebase в это приложение для Android. Шаги по добавлению firebase в ваше приложение.
Шаг 2:
Перейдите в консоль Firebase, перейдите в свое приложение, затем перейдите к настройкам проекта и добавьте SHA1, похожий на отпечаток пальца, вашего подключенного приложения. Чтобы найти SHA1, перейдите в Gradle (правая часть окна Android-студии) > имя вашего приложения > Задачи > Android > signingReport (дважды щелкните по нему)

Note: Make sure to add google-services.json in your application, otherwise, download it from the project settings of the firebase console and add it to your application.

Шаг 3:
Вернитесь к своему приложению в консоли firebase, перейдите к аутентификации (левая панель firebase), затем перейдите к методу входа, чтобы включить поставщика GitHub.

Включить GitHub

Требовать идентификатор клиента и секрет клиента
Теперь нам нужны идентификатор клиента и секрет клиента . Для этого зарегистрируйте свое приложение в качестве приложения разработчика на GitHub и получите идентификатор клиента OAuth 2.0 своего приложения и секрет клиента. Чтобы зарегистрировать свое приложение, введите имя приложения, введите URL-адрес домашней страницы веб-сайта приложения (здесь я даю тот же URL-адрес, что и в URL-адресе обратного вызова авторизации) и предоставьте краткое описание приложения.
Note: Make sure your Firebase OAuth redirect URI (e.g. my-app-12345.firebaseapp.com/__/auth/handler) is set as your Authorization callback URL in your app’s settings page on your GitHub app’s config.
Получите авторизованный URL-адрес обратного вызова , как показано на изображении ниже.
Щелкните Зарегистрировать приложение . Вы получите свой идентификатор клиента и секрет клиента , скопируйте и вставьте их в консоль firebase (под методом входа) и нажмите кнопку «Сохранить», чтобы включить GitHub.

Шаг 4:
Вернитесь в андроид-студию. Добавьте зависимость для Android-библиотеки Firebase Authentication в build.gradle (модуль: your-application-name.app) с помощью Firebase Android BoM.
dependencies {
// Import the BoM for the Firebase platform
implementation platform(‘com.google.firebase:firebase-bom:28.0.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 Android BoM , ваше приложение всегда будет использовать совместимые версии библиотек Firebase Android .
Шаг 5: Работа с файлом MainActivity
Перейдите к приложению > res > layout > activity_main.xml и добавьте приведенный ниже код в этот файл. Ниже приведен код файла activity_main.xml .
XML
<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:orientation="vertical" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> <EditText android:id="@+id/githubId" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="100dp" android:hint="Enter your email associated with github" android:padding="8dp" android:textAlignment="center" android:textColor="#118016" /> <Button android:id="@+id/github_login_btn" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="100dp" android:layout_marginTop="10dp" android:layout_marginEnd="100dp" android:layout_marginBottom="100dp" android:backgroundTint="#fff" android:drawableLeft="@drawable/github" android:drawablePadding="8dp" android:padding="8dp" android:text="@string/log_in_with_github" android:textAllCaps="false" android:textColor="#000" /> </LinearLayout> </androidx.constraintlayout.widget.ConstraintLayout> |
Перейдите к файлу MainActivity.kt и обратитесь к следующему коду. Ниже приведен код файла MainActivity.kt . Комментарии добавляются внутри кода, чтобы понять код более подробно.
Kotlin
import android.content.Intentimport android.os.Bundleimport android.text.TextUtilsimport android.widget.Buttonimport android.widget.EditTextimport android.widget.Toastimport androidx.appcompat.app.AppCompatActivityimport com.google.android.gms.tasks.OnFailureListenerimport com.google.android.gms.tasks.OnSuccessListenerimport com.google.android.gms.tasks.Taskimport com.google.firebase.auth.AuthResultimport com.google.firebase.auth.FirebaseAuthimport com.google.firebase.auth.FirebaseUserimport com.google.firebase.auth.OAuthProvider class MainActivity : AppCompatActivity() { private lateinit var firebaseUser: FirebaseUser private lateinit var loginBtn: Button private lateinit var githubEdit: EditText // firebaseAuth variable to be initialized later private lateinit var auth: FirebaseAuth // an instance of an OAuthProvider using its Builder // with the provider ID github.com private val provider = OAuthProvider.newBuilder("github.com") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) loginBtn = findViewById(R.id.github_login_btn) githubEdit = findViewById(R.id.githubId) // initializing auth auth = FirebaseAuth.getInstance() // Target specific email with login hint. provider.addCustomParameter("login", githubEdit.text.toString()) // Request read access to a user"s email addresses. // This must be preconfigured in the app"s API permissions. val scopes: ArrayList<String?> = object : ArrayList<String?>() { init { add("user:email") } } provider.scopes = scopes // call signInWithGithubProvider() method // after clicking login Button loginBtn.setOnClickListener { if (TextUtils.isEmpty(githubEdit.text.toString())) { Toast.makeText(this, "Enter your github id", Toast.LENGTH_LONG).show() } else { signInWithGithubProvider() } } } // To check if there is a pending result, call pendingAuthResult private fun signInWithGithubProvider() { // There"s something already here! Finish the sign-in for your user. val pendingResultTask: Task<AuthResult>? = auth.pendingAuthResult if (pendingResultTask != null) { pendingResultTask .addOnSuccessListener { // User is signed in. Toast.makeText(this, "User exist", Toast.LENGTH_LONG).show() } .addOnFailureListener { // Handle failure. Toast.makeText(this, "Error : $it", Toast.LENGTH_LONG).show() } } else { auth.startActivityForSignInWithProvider( /* activity= */this, provider.build()) .addOnSuccessListener( OnSuccessListener<AuthResult?> { // User is signed in. // retrieve the current user firebaseUser = auth.currentUser!! // navigate to HomePageActivity after successful login val intent = Intent(this, HomePageActivity::class.java) // send github user name from MainActivity to HomePageActivity intent.putExtra("githubUserName", firebaseUser.displayName) this.startActivity(intent) Toast.makeText(this, "Login Successfully", Toast.LENGTH_LONG).show() }) .addOnFailureListener( OnFailureListener { // Handle failure. Toast.makeText(this, "Error : $it", Toast.LENGTH_LONG).show() }) } }} |
Шаг 6: Создайте новую пустую активность
Обратитесь к этой статье Создайте новую активность в Android Studio и создайте пустую активность. Назовите активность как HomePageActivity. Перейдите в приложение > res > layout > activity_home_page.xml и добавьте приведенный ниже код в этот файл. Ниже приведен код файла activity_home_page.xml .
XML
<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".HomePageActivity"> <LinearLayout android:id="@+id/linearLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="10dp" android:layout_marginTop="10dp" android:layout_marginEnd="10dp" android:orientation="horizontal" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> <TextView android:id="@+id/headerId" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="User Name :" android:textColor="#06590A" android:textSize="25sp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/id" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:layout_marginTop="10dp" android:hint="github Id" android:textAlignment="center" android:textSize="25sp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </LinearLayout> <Button android:id="@+id/logOut" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="456dp" android:layout_marginBottom="20dp" android:gravity="center" android:text="Logout" android:textColor="#fff" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/linearLayout" /> </androidx.constraintlayout.widget.ConstraintLayout> |
Перейдите к файлу HomePageActivity.kt и обратитесь к следующему коду. Ниже приведен код файла HomePageActivity.kt .
Kotlin
import android.content.Intentimport androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport android.widget.Buttonimport android.widget.TextView class HomePageActivity : AppCompatActivity() { var userName = "" private lateinit var githubUserName: TextView
|