为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Golang 进行基于 Firebase 令牌的身份验证。

使用 Golang 进行基于 Firebase 令牌的身份验证。

Go
开满天机 2022-06-21 10:29:30
我正在使用完全在 Golang 中的 firebase admin SDK 创建一个 RESTful API。尝试集成基于令牌的身份验证时会出现问题,这需要客户端 SDK 和管理 SDK例如,firebase 客户端 SDK 提供了诸如输出 ID 令牌之类的方法signInWithCustomToken,signInWithEmailAndPassword这些方法将使用 Admin SDK 中的方法进行处理。firebase admin SDK 提供了一些方法,例如VerifyIDToken验证从客户端传递的令牌。在最新的 firebase 文档中,它说,Firebase Admin SDK 将 Cloud Firestore 的 Google Cloud 客户端库与其他 Firebase 功能的客户端库和 SDK 捆绑在一起。由于我需要在 Golang 中同时使用 Client 和 Admin SDK,因此我决定使用 Admin SDK。但是,Golang 中的 Admin SDK 文档没有signInWithCustomToken和 等方法signInWithEmailAndPassword。如果我要使用 Golang 构建一个 RESTful API,我是否必须使用另一种前端编程语言如 JavaScript 来实现基于令牌的身份验证?在 JavaScript Admin SDK 中,它们确实有可用的方法,例如signInWithCustomToken和signInWithEmailAndPassword.我想知道在 Admin SDK 中没有使用 Golang 记录必要方法时编写基于令牌的身份验证的解决方法。
查看完整描述

2 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

您还可以使用auth_test.go中的代码作为示例:


func signInWithCustomToken(token string) (string, error) {

    req, err := json.Marshal(map[string]interface{}{

        "token":             token,

        "returnSecureToken": true,

    })

    if err != nil {

        return "", err

    }


    apiKey, err := internal.APIKey()

    if err != nil {

        return "", err

    }

    resp, err := postRequest(fmt.Sprintf(verifyCustomTokenURL, apiKey), req)

    if err != nil {

        return "", err

    }

    var respBody struct {

        IDToken string `json:"idToken"`

    }

    if err := json.Unmarshal(resp, &respBody); err != nil {

        return "", err

    }

    return respBody.IDToken, err


查看完整回答
反对 回复 2022-06-21
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

Admin SDK 提供了与后端代码一起使用的功能。使用 Firebase 身份验证,用户可以在前端登录并将 ID 令牌传递给后端。如果您建议使用 golang 编写类似前端的应用程序,您将找不到任何 API。在这种情况下,您可以直接调用Firebase Auth REST API



查看完整回答
反对 回复 2022-06-21
  • 2 回答
  • 0 关注
  • 215 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信