我正在构建一个功能,用户可以通过hotmail,outlook,实时电子邮件导入他的联系人。
我正在使用Live SDK javascript库使其成为可能,我必须创建一个新应用并设置重定向网址。当用户触发操作时,浏览器会提示用户登录的窗口自动访问联系人信息。
我有以下uri结构:
www.example.com/pools/12
www.example.com/pools/13
www.example.com/pools/{pool_id}
我将重定向uri设置为www.example.com,因此当我触发事件时,浏览器会提示一个窗口,其中包含以下错误:
The provided value for the input parameter 'redirect_uri' is not valid. The expected value is 'https://login.live.com/oauth20_desktop.srf' or a URL which matches the redirect URI registered for this client application.
但如果我将重定向uri从microsoft开发人员中心更改为:
www.example.com/pools/12
然后从此页面再试一次,代码完美无缺。
我需要设置重定向uri来接受所有类型的uri,我也尝试使用正则表达式,但运气不好。这是我使用的代码
<%= content_for :javascript do %>
<script src="//js.live.net/v5.0/wl.js"></script>
<script type="text/javascript">
WL.init({
client_id: '<%= ENV["LIVE_CLIENT"] %>',
scope: ["wl.basic", "wl.contacts_emails"],
response_type: "token"
});
$("#import-contacts-live").on("click", function(event) {
event.preventDefault();
WL.login({
scope: ["wl.basic", "wl.contacts_emails"],
redirect_uri: '<%= request.original_url %>',
}).then(function (response){
WL.api({
path: "me/contacts",
method: "GET"
}).then(function (response) {
console.log(response.data);
},
function (responseFailed) {
console.log(responseFailed);
});
},
function (responseFailed){
console.log("Error signing in: " + responseFailed.error_description);
});
});
</script>
<% end %>