2016-07-14 142 views
0

嗨,我卡住了,不知何故找不到解决方案。这看起来很简单,但还好。在这里。我在Azure中有一个移动服务,我想用javascript访问这个服务。我如何解决401未经授权的问题?我尝试从MS提供的文档,但没有运气。这是我到目前为止(添加网址的关键不当然)我可以添加什么来让它工作?Azure移动服务和Javascript

var client = new WindowsAzure.MobileServiceClient(
"https://cdshop.azure-mobile.net/", 
"vGpqzyApJXXXXXXXXblQCWne73" 
); 

var getJSON = function (url, callback) { 
var xhr = new XMLHttpRequest(); 
xhr.open('get', url, true); 
xhr.responseType = 'json'; 
xhr.onload = function() { 
    var status = xhr.status; 
    if (status == 200) { 
     callback(null, xhr.response); 
    } else { 
     callback(status); 
    } 
}; 
xhr.send(); 
}; 


$(function() { 
$('#clickme').click(function() { 

    getJSON('http://cdshop.azure-mobile.net/api/cds/total?key=vGpqzyApJXXXXXXXXblQCWne73', function (err, data) { 
if (err != null) { 
    alert('Something went wrong: ' + err); 
} else { 
    alert('Your Json result is: ' + data.result); 
    result.innerText = data.result; 
} 
    }); 
}); 
}); 

回答

1

如果您正在创建自己的HTTP请求,您需要设置所谓的X-谟 - 应用程序的请求头与你的应用程序键,例如“vGpqzyApJXXXXXXXXblQCWne73”,用于设置为“应用程序”或“用户”的表和API。 (假设您仍在使用移动服务;较新的App Service不使用此X-ZUMO-APPLICATION标头。)为“用户”设置的表和API也需要带有用户身份验证令牌的X-ZUMO-AUTH请求标头。

或者,您可以使用您在第一行创建的MobileServiceClient,它会为您执行此操作。 This page有调用API和表的示例。对于你的例子:

client.invokeApi("cds", { 
    body: null, 
    method: "get" 
}).done(function (data) { 
    alert('Your Json result is: ' + data.result); 
    result.innerText = data.result; 
}, function(error) { 
    alert('Something went wrong: ' + error); 
}); 
+0

非常感谢Eric,它像一个魅力 –