为什么需要Client Secret,但如果你只是使用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的连接可以使用比直接连接到服务更少的安全性约束?所以它看起来像“任选所需”,取决于上下文,这使它成为我的矛盾,但可能是我错过了什么。
答案 0 :(得分:0)
可能是因为服务器端代码为您提供了更多访问权限,例如:
必需。指定登录用户的范围 同意。对于单个范围,请使用以下格式:scope:“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信息中心中将应用配置为桌面/移动应用来解决此限制。