gpt4 book ai didi

android - 使用 firebase 身份验证对 Android 进行身份验证并发送 token 以验证后端 Django

转载 作者:行者123 更新时间:2023-11-29 02:21:03 25 4
gpt4 key购买 nike

我要在这里解决的问题很常见,我担心的是其中的一部分,我将强调:

我的 Android 应用程序使用 firebase 身份验证(创建或验证是否存在)对用户进行身份验证,然后调用我的 django 后端上的各种 API。要调用 API,我需要在每个请求中发送一个 token ,以防止未经授权的请求。

我计划首先使用 Django 身份验证,但由于我使用的是 firebase 身份验证,我正在考虑以下方法:

当用户登录或登录到 Android 设备时。 Android 将生成一个自定义 token (来自 firebase),将其存储在手机上,然后在每个 API 中将其发送到后端。在后端,我将使用 firebase API 从 firebase 获取用户(第一次)并将 token 存储在我的用户模型中。如果在我的数据库中找不到 token 并且在 firebase 中不可用,那么我将返回一个非授权用户。对于后续请求,我使用本地用户表验证 token 。

请告知这种方法在这种情况下是否是最好的。

谢谢

最佳答案

我无法评论您的方法。但即使是我也想知道最好的方法。以下是我如何使用本页 verify-id-tokens 中提供的信息进行操作

  1. 用户使用 firebase sdk 登录。
  2. 我在改造 http 调用拦截器中附加 token 作为 header 。现在 id token 仅在 15-20 分钟内有效,因此您无法保存它们。只需使用下面的代码在改造 http 调用中添加拦截器

    public class FirebaseUserIdTokenInterceptor implements Interceptor {

    // Custom header for passing ID token in request.
    private static final String X_FIREBASE_ID_TOKEN = "Authorization";

    @Override
    public Response intercept(@NonNull Chain chain) throws IOException {
    Request request = chain.request();

    try {
    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    if (user == null) {
    throw new Exception("User is not logged in.");
    } else {
    Task<GetTokenResult> task = user.getIdToken(true);
    GetTokenResult tokenResult = Tasks.await(task);
    String idToken = tokenResult.getToken();

    if (idToken == null) {
    throw new Exception("idToken is null");
    } else {
    Request modifiedRequest = request.newBuilder()
    .addHeader(X_FIREBASE_ID_TOKEN, "Bearer ".concat(idToken))
    .build();
    return chain.proceed(modifiedRequest);
    }
    }
    } catch (Exception e) {
    throw new IOException(e.getMessage());
    }
    }

  3. 我的节点服务器验证 id token ,如果 id token 有效则发送响应,否则发送错误消息。

检查页面上的警告:

The ID token verification methods included in the Firebase Admin SDKs are meant to verify ID tokens that come from the client SDKs, not the custom tokens that you create with the Admin SDKs.

希望这对您有所帮助!

关于android - 使用 firebase 身份验证对 Android 进行身份验证并发送 token 以验证后端 Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55604198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com