gpt4 book ai didi

react-native-firebase - Firebase REST API signInWithIdp 和 Apple 登录提供程序 - MISSING_OR_INVALID_NONCE

转载 作者:行者123 更新时间:2023-12-05 03:46:03 37 4
gpt4 key购买 nike

我正在 React Native 应用程序中实现 Apple Sign In。

我正在使用的示例在移动应用程序中运行良好: Apple Sign In - React Native Firebase

以防万一上面的链接发生变化,这里是代码:

import auth from '@react-native-firebase/auth';
import { appleAuth } from '@invertase/react-native-apple-authentication';

async function onAppleButtonPress() {
// Start the sign-in request
const appleAuthRequestResponse = await appleAuth.performRequest({
requestedOperation: appleAuth.Operation.LOGIN,
requestedScopes: [appleAuth.Scope.EMAIL, appleAuth.Scope.FULL_NAME],
});

// Ensure Apple returned a user identityToken
if (!appleAuthRequestResponse.identityToken) {
throw 'Apple Sign-In failed - no identify token returned';
}

// Create a Firebase credential from the response
const { identityToken, nonce } = appleAuthRequestResponse;
const appleCredential = auth.AppleAuthProvider.credential(identityToken, nonce);

// Sign the user in with the credential
return auth().signInWithCredential(appleCredential);
}

在我的后端应用程序只有在使用 Firebase 访问 token 时才有权进行调用。

为了让它发挥作用,我使用了 Google/Firebase REST API signInWithIdp。这适用于 Twitter/Facebook/Google,但不适用于 Apple。

我/我做的是使用这里获得的Apple identityToken:

const { identityToken, nonce } = appleAuthRequestResponse;

然后我打这个电话:

POST https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key={key}

BODY:
{
"postBody":"id_token={identityToken}&providerId=apple.com",
"requestUri":"http://localhost",
"returnSecureToken": true
}

但我得到:

{
"error": {
"code": 400,
"message": "MISSING_OR_INVALID_NONCE : Duplicate credential received. Please try again with a new credential.",
"errors": [
{
"message": "MISSING_OR_INVALID_NONCE : Duplicate credential received. Please try again with a new credential.",
"domain": "global",
"reason": "invalid"
}
]
}
}

由于缺少文档,我在这方面受阻。 :(

非常欢迎任何有关如何消除此错误的建议。 :)

最佳答案

Here是支持“使用 OAuth 凭据登录”的文档。它给出的示例如下所示:

id_token=[GOOGLE_ID_TOKEN]&providerId=[google.com]

您实际上也可以添加一个 nonce 参数(没有记录!),例如:

id_token=ID_TOKEN&providerId=apple.com&nonce=NONCE

为了解决这个问题,我必须使用 SDK(我使用的是 iOS)并发出请求。我使用 mitmproxy 读取网络,这是它在输入虚拟数据时显示的内容:

Request

关于react-native-firebase - Firebase REST API signInWithIdp 和 Apple 登录提供程序 - MISSING_OR_INVALID_NONCE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65500905/

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