我正在努力理解在React Native Expo应用程序中使用Auth0进行身份验证,但是我似乎无法登出。这意味着我也无法切换登录帐户。我能够在新设备上首次启动应用程序时登录。在初始登录后,静默认证开始运行,因为我无法注销,所以我保持登录状态。
注销时,我访问了Auth0注销url:
const logout = async () => {
try {
await axios.get(`${domainUrl}/v2/logout?client_id=${clientId}`)
} catch (err) {
console.error(err)
}
}
....
<Button
title='Sign out'
onPress={logout}
/>
在我的Auth0日志中,Auth0明确表示:
用户已成功注销
。我使用
AuthSessionNew.useAuthRequest()
来处理登录:const [request, response, promptAsync] = AuthSessionNew.useAuthRequest(
{
clientId,
responseType: 'id_token',
scopes: ['app', 'name'],
extraParams: {
nonce: 'nonce',
},
redirectUri,
},
discovery,
)
....
<Button
disabled={!request}
title='Sign in'
onPress={() => promptAsync({ useProxy })}
/>
与注销一样,每当我调用登录按钮时,在Auth0日志中都会得到成功的登录记录:成功登录
response
最初为null,直到第一次登录。登录后,即使应用程序关闭或未关闭,它也会持续存在。我想这是一种期望的行为,可以通过这种方式查看用户是否已登录应用程序。但是,我想一旦调用注销路由,它就应该被清除。
有人知道这里发生了什么吗?为什么尽管Auth0日志显示已注销,但我无法注销?
请参考https://auth0.com/docs/api/authentication?http#logout上的文档。
由于这是一个移动应用程序,因此在注销后没有重定向URL。
federated
也试过了,但没有任何区别。
响应对象的样式如下:
Object {
"authentication": null,
"error": null,
"errorCode": null,
"params": Object {
"exp://192.168.10.187:19000/--/expo-auth-session": "",
"id_token": "JWT-TOKEN",
"state": "BQK8UJc9sK",
},
"type": "success",
"url": "exp://192.168.10.187:19000/--/expo-auth-session#id_token=JWT-TOKEN",
}
不确定为什么它显示authentication: null
和type: success
我真的很感激有人可以看看这个。如果有任何信息缺失,请告诉我,我会将其添加到帖子中。提前致谢。
Stephan Valois