0

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 回调的信息,但我对此很陌生,不知道如何在我的科尔多瓦应用程序上使用它。

4

1 回答 1

0

身份验证正在下降,因为在服务器中注册的回调 uri 或重定向 uri 与 Ripple 使用的不匹配。在 CPT 3.0 和 Visual Studio 2015 Preview 中,Visual Studio 选择的端口范围为 4400 和 4444,并且由于端口号。在4400和4444之间随机选择,很难事先知道端口。

因此,最好使用模拟器或设备进行 OAuth。

于 2014-12-19T19:37:46.300 回答