📜  使用 volley github 在 android 中登录身份验证 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:49:47.452000             🧑  作者: Mango

使用 Volley 和 GitHub 在 Android 中登录身份验证 - Shell-Bash

在 Android 应用程序中,登录身份验证是一个非常普遍的需求。GitHub 提供了 OAuth 2.0 身份验证,允许用户通过使用他们的 GitHub 帐户进行身份验证。Volley 是一种流行的 Android 库,用于快速轻松地进行网络请求。在本文中,我们将介绍如何使用 Volley 和 GitHub 在 Android 应用程序中实现登录身份验证。

步骤 1:注册你的应用

在使用 GitHub 身份验证 API 之前,你需要在 GitHub 上注册你的应用程序并获取客户端 ID 和客户端密钥。按照以下步骤完成:

  1. 登录到 GitHub 开发人员门户
  2. 单击 "New OAuth App"。
  3. 输入应用程序的名称、主页和回调 URL。
  4. 单击 "Register application"。
  5. 现在你可以看到你的应用程序详细信息,包括客户端 ID 和客户端密钥。

将这些详细信息保存在一个安全的地方,后面将使用它们进行身份验证。

步骤 2:添加 Volley 依赖

要使用 Volley 进行网络请求,你需要在你的 Android 项目中添加 Volley 依赖项。

  1. 在你的 build.gradle 文件中添加以下依赖:
dependencies {
    implementation 'com.android.volley:volley:1.2.0'
}
  1. 在你的 AndroidManifest.xml 文件中添加以下权限:
<uses-permission android:name="android.permission.INTERNET" />

现在,你已经可以使用 Volley 进行网络请求了。

步骤 3:创建登录 Activity

在你的 Android 应用程序中,你需要创建一个 Activity 来处理登录流程。在这个 Activity 中,你需要显示一个登录按钮,当用户单击该按钮时,启动 GitHub 身份验证流程。

  1. 在你的 Android 项目中添加一个新的 Activity,名为 LoginActivity
  2. LoginActivity 的布局文件中添加一个登录按钮。
<Button
    android:id="@+id/login_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Login with GitHub" />
  1. LoginActivity 的 Java 文件中,获取登录按钮并添加点击事件。
Button loginButton = findViewById(R.id.login_button);
loginButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // 在这里添加启动 GitHub 身份验证流程的代码。
    }
});

现在你已经准备好启动 GitHub 身份验证流程了。

步骤 4:启动 GitHub 身份验证流程

在用户单击登录按钮后,你需要启动 GitHub 身份验证流程。这个过程可以在 WebView 中完成。

  1. LoginActivity 中添加以下代码:
String url = "https://github.com/login/oauth/authorize"
        + "?client_id=<YOUR_CLIENT_ID>"
        + "&scope=read:user,user:email";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);

<YOUR_CLIENT_ID> 替换为你在第一步中获取的客户端 ID。

  1. LoginActivity 中添加以下方法,以捕获 GitHub 回调 URL:
@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);

    Uri uri = intent.getData();
    if (uri != null && uri.toString().startsWith("<YOUR_CALLBACK_URL>")) {
        String code = uri.getQueryParameter("code");
        if (code != null) {
            // 在这里向 GitHub 发送网络请求,以获取访问令牌(access token)。
        } else {
            // 处理错误的回调。
        }
    }
}

<YOUR_CALLBACK_URL> 替换为你在第一步中注册应用程序时指定的回调 URL。

现在,当用户单击登录按钮时,他们将被重定向到 GitHub 登录页面。一旦他们完成了登录和授权过程,他们将被重定向回你的应用程序,并携带一个授权代码。该代码将用于获取访问令牌。

步骤 5:使用 Volley 发送网络请求

在上一步中,我们捕获了 GitHub 的回调 URL,并提取了一段授权代码。现在,我们需要使用该代码向 GitHub 发送网络请求,以获取访问令牌。

  1. LoginActivityonNewIntent 方法中添加以下代码:
String url = "https://github.com/login/oauth/access_token"
        + "?client_id=<YOUR_CLIENT_ID>"
        + "&client_secret=<YOUR_CLIENT_SECRET>"
        + "&code=" + code;
StringRequest request = new StringRequest(Request.Method.POST, url,
        new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                // 在这里处理成功的响应。
            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                // 在这里处理错误的响应。
            }
        });
RequestQueue queue = Volley.newRequestQueue(this);
queue.add(request);

<YOUR_CLIENT_ID><YOUR_CLIENT_SECRET> 替换为你在第一步中获取的客户端 ID 和客户端密钥。

  1. 在成功的响应处理程序中,你可以提取访问令牌并将其保存在 SharedPreferences 中,以便您的应用程序在以后的会话中使用它。
String accessToken = "";
try {
    String[] parts = response.split("&");
    for (String part : parts) {
        String[] keyValue = part.split("=");
        if (keyValue[0].equals("access_token")) {
            accessToken = keyValue[1];
            break;
        }
    }
} catch (Exception e) {
    // 处理错误的响应。
}

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("access_token", accessToken);
editor.apply();

现在,当用户完成 GitHub 身份验证流程时,他们将被重定向回你的应用程序,并且你的应用程序将能够使用访问令牌进行 API 调用。

结论

在本文中,我们介绍了如何使用 Volley 和 GitHub 在 Android 应用程序中实现登录身份验证。通过遵循上述步骤,你可以为你的应用程序添加用户身份验证,并与 GitHub 的身份验证 API 进行交互。