我修改了连接OneDrive的示例代码,并允许用户将图像上传/下载到OneDrive。我已经部署了MVC5 app here。下面是javascript代码的关键部分
$(document).ready(function () {
var client_id = "61029bc2-373d-46d6-935b-ab34b325ef3a",
scope = ["wl.signin", "wl.basic", "wl.skydrive", "wl.skydrive_update"],
//redirect_uri = "http://localhost:61727/home/callback"; //when redirect_uri is configured as localhost everything works find
redirect_uri = "http://onedriveuploaddemo.azurewebsites.net/home/callback"; //When I deploy application to azure get error saying invalid redirect_uri
WL.Event.subscribe("auth.login", onLogin);
WL.Event.subscribe("auth.sessionChange", onSessionChange);
WL.init({ client_id: client_id, redirect_uri: redirect_uri, response_type: "token", scope: scope });
WL.ui({ name: "signin", element: "signin" });
});
请参阅下面的应用配置
我是否需要在Azure中启用任何设置才能完成此操作?
注意:在配置' redirect_uri'我正在两个地方更改它,例如在MVC应用程序和应用程序注册门户网站中。两者都是一样的。
答案 0 :(得分:3)
使用Fiddler4,我能够捕获错误消息,即:
The provided value for the input parameter 'redirect_uri' is not valid. The scope 'wl.signin wl.basic wl.skydrive wl.skydrive_update' requires that the request must be sent over a secure connection using SSL.
Microsoft现在要求重定向URI对所有身份验证重定向使用SSL。 Localhost是免税的,这就是它在那里工作的原因。如果您想允许使用Microsoft帐户登录,则需要在您的站点上获得SSL支持。
另外:看起来你正在使用非常旧的LiveSDK for JavaScript,因为它不支持更新的OneDrive API,所以不再推荐使用它。虽然没有适用于JavaScript的OneDrive SDK,但您可能会发现OneDrive-Explorer-JS中的示例代码有助于在不使用LiveSDK代码的情况下处理身份验证。特别是,odauth.js应该完成你需要的所有事情。