管理的 Auth0 React Native 补丁用户 API
Auth0 React Native patch user by Management API
我想在我的 Auth0 身份验证中修补用户的 user_metadata,但我收到以下错误:
{"error": "Unauthorized", "message": "Missing authentication", "statusCode": 401}
所以我在我的 React Native 中导入了 Auth0:
import Auth0 from "react-native-auth0";
const auth0 = new Auth0({
domain: Config.AUTH0_DOMAIN,
clientId: Config.AUTH0_CLIENT_ID
});
我在我的应用程序中使用仪表板中的常量 Config.AUTH0_DOMAIN
和 Config.AUTH0_CLIENT_ID
。
作为下一步,我执行以下代码:
login = () => {
auth0.webAuth
.authorize({
scope: Config.AUTHO_SCOPE,
audience: Config.AUTH0_AUDIENCE,
device: DeviceInfo.getUniqueID(),
prompt: "login"
})
.then(res => {
auth0.auth
.userInfo({token: res.accessToken})
.then(data => {
fetch(`https://<MY_AUTH_DOMAIN>/api/v2/users/${encodeURIComponent(data.sub)}`, {
method: "PATCH",
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
"metadata": {first_name: 'John', last_name: 'Doe', skillLevel: 'PRO!'}
})
}).then(res => res.json())
.then(async (data) => {
try {
console.log('user stored', data);
} catch (e) {
console.log("error while user storing", e)
}
})
})
})
}
其中 Config.AUTHO_SCOPE
和 Config.AUTH0_AUDIENCE
也来自我的 auth0 的应用仪表板。
我是否在我的 headers 中遗漏了一些身份验证,或者管理 API 是错误的选择?我是否需要从我的 Back-End 查询此查询?
资源:
来自管理层的官方 API 文档 API:https://auth0.com/docs/api/management/v2?_ga=2.147997749.368915485.1617866251-2089752765.1617460658#!/Users/patch_users_by_id
官方 react-native-auth0 文档:https://auth0.github.io/react-native-auth0/src_management_users.js.html
感谢您的帮助!
我遇到了这个问题,经过一些工作后它开始工作了。
首先,我必须将我的项目配置为在 Applications/Apis 的 Auth0 仪表板中授予元数据写入权限。
我添加的两个是read:current_user
和update:current_user_metadata
。
然后,在我的授权请求中,我修改了范围和受众。
audience: 'https://<MY APP DOMAIN>/api/v2/'
scope: 'read:current_user update:current_user_metadata openid profile offline_access'
接下来,我通过将我的身份验证令牌传递给 auth.userInfo
来获取 userId。
auth0.auth.userInfo({token: authToken}).then((response)=>{
return response.sub;
})
最后,我使用了 response.sub
中的值 returned 以及我为特殊受众和范围设置的 authToken 来修补用户,并且成功运行。 UserId 是 response.sub returned.
auth0.users(authToken).patchUser({id: userId, metadata: newUserMetadata});
编辑:
我在你的代码片段中看到的另一个问题是,如果你想使用 fetch,你没有在 header 中放置不记名授权令牌。如果是这种情况,您的提取响应可能会 return 并出现 401 错误。代码应如下所示:
const serverResponse = await fetch('https://<MYAPP>.auth0.com/api/v2/users/' + user.sub,{
headers:{
Authorization: 'Bearer ' + accessToken
}
})
我想在我的 Auth0 身份验证中修补用户的 user_metadata,但我收到以下错误:
{"error": "Unauthorized", "message": "Missing authentication", "statusCode": 401}
所以我在我的 React Native 中导入了 Auth0:
import Auth0 from "react-native-auth0";
const auth0 = new Auth0({
domain: Config.AUTH0_DOMAIN,
clientId: Config.AUTH0_CLIENT_ID
});
我在我的应用程序中使用仪表板中的常量 Config.AUTH0_DOMAIN
和 Config.AUTH0_CLIENT_ID
。
作为下一步,我执行以下代码:
login = () => {
auth0.webAuth
.authorize({
scope: Config.AUTHO_SCOPE,
audience: Config.AUTH0_AUDIENCE,
device: DeviceInfo.getUniqueID(),
prompt: "login"
})
.then(res => {
auth0.auth
.userInfo({token: res.accessToken})
.then(data => {
fetch(`https://<MY_AUTH_DOMAIN>/api/v2/users/${encodeURIComponent(data.sub)}`, {
method: "PATCH",
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
"metadata": {first_name: 'John', last_name: 'Doe', skillLevel: 'PRO!'}
})
}).then(res => res.json())
.then(async (data) => {
try {
console.log('user stored', data);
} catch (e) {
console.log("error while user storing", e)
}
})
})
})
}
其中 Config.AUTHO_SCOPE
和 Config.AUTH0_AUDIENCE
也来自我的 auth0 的应用仪表板。
我是否在我的 headers 中遗漏了一些身份验证,或者管理 API 是错误的选择?我是否需要从我的 Back-End 查询此查询?
资源:
来自管理层的官方 API 文档 API:https://auth0.com/docs/api/management/v2?_ga=2.147997749.368915485.1617866251-2089752765.1617460658#!/Users/patch_users_by_id
官方 react-native-auth0 文档:https://auth0.github.io/react-native-auth0/src_management_users.js.html
感谢您的帮助!
我遇到了这个问题,经过一些工作后它开始工作了。
首先,我必须将我的项目配置为在 Applications/Apis 的 Auth0 仪表板中授予元数据写入权限。
我添加的两个是read:current_user
和update:current_user_metadata
。
然后,在我的授权请求中,我修改了范围和受众。
audience: 'https://<MY APP DOMAIN>/api/v2/'
scope: 'read:current_user update:current_user_metadata openid profile offline_access'
接下来,我通过将我的身份验证令牌传递给 auth.userInfo
来获取 userId。
auth0.auth.userInfo({token: authToken}).then((response)=>{
return response.sub;
})
最后,我使用了 response.sub
中的值 returned 以及我为特殊受众和范围设置的 authToken 来修补用户,并且成功运行。 UserId 是 response.sub returned.
auth0.users(authToken).patchUser({id: userId, metadata: newUserMetadata});
编辑:
我在你的代码片段中看到的另一个问题是,如果你想使用 fetch,你没有在 header 中放置不记名授权令牌。如果是这种情况,您的提取响应可能会 return 并出现 401 错误。代码应如下所示:
const serverResponse = await fetch('https://<MYAPP>.auth0.com/api/v2/users/' + user.sub,{
headers:{
Authorization: 'Bearer ' + accessToken
}
})