tl; dr我正在尝试在我的 cordova 应用程序(VS2013 中的多设备混合应用程序)中实现 oauth,但在取回令牌时遇到问题
对于我的实习项目,我制作了一个基本的 oauth 服务器并将其添加到现有项目中。当移动应用程序将用户发送到身份验证页面时,他会发送他的 ID 令牌和重定向 URL。
身份验证有效,并生成访问和刷新令牌。我只是无法将它们发送回应用程序。我将我的应用程序和身份验证站点都本地化,因此我认为我无法真正测试它的某些方面。我无法使用 Hyper-V 模拟器,因为他无法链接到本地托管网站。
我使用以下 JS 代码从我的 cordova 应用程序中提取 url,我不知道这是否是可以重定向用户的有效 url。
http://www.thecodeship.com/web-development/javascript-url-object/
我使用此代码将用户发送到身份验证页面。
function goToAuth() {
var test = urlObject();
//Put the url in the demo ID element
appUri = test.protocol + test.host + test.hash + test.pathname + test.search;
var redirecturl = 'http://localhost:50587/Login/IndexMobile?token=gh0BcoTaNUu6fc3GK8jN&redirecturi='+ appUri;
var ref = window.open(redirecturl, '_blank', 'location=yes');
ref.addEventListener('loadstart', function (event) { alert('start: ' + event.url); });
ref.addEventListener('loadstop', function (event) { alert('stop: ' + event.url); });
ref.show();
ref.addEventListener('loaderror', function (event) { alert('error: ' + event.message); });
ref.addEventListener('exit', function (event) { alert(event.type); });}
在 asp.net 中,我使用这行代码将用户重定向回提供的 redirectUri。
return Redirect(redirectUri);
他给了我一个“不是有效路径”的错误,但我认为这是由于应用程序是通过 Ripple 在本地托管的。
现在我知道需要发生的是,当用户完成身份验证时,该页面应该关闭并且他应该返回应用程序,并且应用程序需要能够访问令牌。我首先认为我可以通过使用令牌重定向用户来做到这一点,但我无法测试这种方法。
我还阅读了一些关于 JS 回调的信息,但我对此很陌生,不知道如何在我的科尔多瓦应用程序上使用它。