正在尝试获取有关已验证用户的信息
trying to get info about authenticated user
我使用Azure移动应用程序进行谷歌身份验证,使用以下代码:
var client = new WindowsAzure.MobileServiceClient(appUrl);
client.login("google").done(function (results) {
console.log("You are now logged in as: " + results.userId);
}, function (err) {
console.log("Error: " + err);
});
它是有效的。但当我试图获得有关已验证用户的信息时,在完成的功能中添加代码:
var url = client.applicationUrl + '/.auth/me';
fetch(url)
.then(function (data) {
return data.json()
}).then(function (user) {
// The user object contains the claims for the authenticated user
});
我得到以下错误:
无法加载Fetch APIhttps://accounts.google.com/o/oauth2/v2/auth?response_type=code&client_id=3…请求的上不存在"Access Control Allow Origin"标头资源因此,不允许访问源"null"。如果不透明响应满足您的需求,将请求的模式设置为"无cors"以获取禁用CORS的资源。
这个错误与跨来源请求有关,可以通过两种方式解决:
- 使用jsonp代替json,但我不知道fetch函数如何使用jsonp
- 为了更好地使用CORS,这个CORS选项应该在谷歌开发者控制台中激活
可能问题是,我的web应用程序和Azure移动应用程序位于不同的域上,但我在谷歌开发者控制台上将这两个域都添加到了授权JavaScript源中。
顺便说一句,上面的错误我在Chrome中得到。如果我尝试Edge,我会得到以下错误:
SCRIPT5022:ReferenceError:"fetch"未定义
因为Edge还不支持fetch。
我建议将以下配置应用于此处的Azure移动服务。
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
</system.webServer>
或者,它可能是本文中讨论的一个bug。
相关文章:
- 使用JavaScript验证用户交互/输入-这是一种很好的方法
- 根据某些条件验证用户输入,而不是将输入输入到数组中,需要最基本的解决方案
- 实现已验证用户更新状态的最佳方式,作为对系统中已更改状态的反应.(ASP.NET MVC网站)
- 如何验证用户在离开文本框时是否在文本框中输入了内容
- 正在尝试验证用户ID
- 基于Rails的javascript应用程序的安全性:如何在渲染的javascript中验证用户的权限
- 正在尝试获取有关已验证用户的信息
- 通过 JS 和 ajax 验证用户登录
- 如何验证用户是否来自我的 6 个域之一
- 如何验证用户是否已选择要上传的文件
- 如何在角度表单日期选择器中验证用户输入
- 验证用户是否仅投票一次
- 如何在使用快速验证程序注册时验证用户用户名
- 一个简单的jquery片段来验证用户'的电子邮件地址
- 淘汰验证用户定义的规则
- 验证用户输入HTML子集
- 如何验证用户的facebook ID以防止再次提交
- 验证用户控件输入值
- 如何验证用户是否在使用PHP、JS和/或REST API跟踪您?
- promise使用password.js验证用户时出现问题