我正在使用Azure移动应用程序服务和Xamarin表单。在我的应用程序中,我使用了在azure门户中配置的web社交媒体身份验证(Facebook、Twitter、Google)。
我使用从CurrentClient.Id获得的sid,以便将其与我的简易表格中的用户进行匹配。然而,对于一些用户,在使用相同的帐户和相同的提供商登录后,由于sid不同,在我的数据库中找不到匹配!我100%确定这是以前用来登录的同一个帐户,但我得到了不同的sid。那件事怎么可能?它不应该在每次登录时都保持不变,或者它的全部意义是什么?
发布于 2021-03-04 03:35:07
为此,您正在使用Azure应用程序服务身份验证。在传递给服务的JWT中有一个稳定的ID。您可以很容易地从/.auth/me端点获得它(请参阅https://docs.microsoft.com/en-us/azure/app-service/app-service-authentication-how-to#validate-tokens-from-providers )
当你得到/.auth/me并将X-ZUMO-AUTH头设置为从登录返回的authenticationToken时,user.userId字段将被填充一个稳定的ID。因此,下一个问题是“我如何在Node.js后端添加这个/比较这个?”幸运的是,HOW-TO FAQ for Node.js明确地回答了这个问题。简而言之,使用context.user.getIdentity() (一种异步方法)来获取身份,然后对其执行某些操作:
function queryContextFromUserId(context) {
return context.user.getIdentity().then((data) => {
context.query.where({ id: data.userId });
return context.execute();
});
}
function addUserIdToContext(context) {
return context.user.getIdentity().then((data) => {
context.itme.id = data.userId;
return context.execute();
});
}
table.read(queryContextFromUserId);
table.insert(addYserIdToContext);
table.update(queryContextFromUserId);
table.delete(queryContextFromUserId);这里真正的问题是“数据块中有什么?”它是一个包含“带有X-ZUMO-AUTH标头的/.auth/me端点生成的内容”的对象,并且依赖于提供者。
解决这个问题的机制。
你现在可以在你的后端使用它们了。
https://stackoverflow.com/questions/59905145
复制相似问题