0

为什么需要客户端密码,但如果您只使用 javascript 客户端,则不需要。

这不合逻辑。有人可以向我解释一下,为什么直接进行 REST 调用时需要密码?

javascript api 不需要“客户端密码”:

WL.init({
    client_id: APP_CLIENT_ID,
    redirect_uri: REDIRECT_URL,
    scope: "wl.signin", 
    response_type: "token"
});

但是,如果您想直接进行 REST 调用,则需要:

POST https://login.live.com/oauth20_token.srf

Content-type: application/x-www-form-urlencoded

client_id=CLIENT_ID&redirect_uri=REDIRECT_URL&client_secret=CLIENT_SECRET&code=AUTHORIZATION_CODE&grant_type=authorization_code

代码来自:http: //msdn.microsoft.com/en-us/library/hh243641.aspx

我假设客户端密码是一项安全功能,如果是这样,为什么通过 js API 的连接可以比直接连接到服务的安全约束更少?因此,根据上下文,它看起来像“可选要求”,这对我来说是矛盾的,但可能是我错过了一些东西。

4

1 回答 1

0

可能是因为服务器端代码为您提供了更多访问权限,例如:

必需的。指定登录的用户同意的范围。对于单个范围,请使用以下格式:范围:“wl.signin”。对于多个范围,请使用以下格式:范围:[“wl.signin”,“wl.basic”]。如果未提供范围,则使用 WL.init 的范围值。如果 WL.init 或 WL.login 中未提供范围,则 WL.login 将返回错误。注意 WL.login 可以请求“wl.offline_access”范围,但它需要服务器端实现,并且 WL.init 函数必须将其 response_type 属性设置为“code”。

基本上,客户端机密为您提供了更高的安全许可,因此您可以访问其他方式无法访问的额外内容。

注意:您可以通过在实时 sdk 仪表板上将您的应用程序配置为桌面/移动应用程序来绕过此限制。

于 2014-10-19T06:59:20.123 回答