tl;dr Cordova アプリ (VS2013 のマルチデバイス ハイブリッド アプリ) に oauth を実装しようとしていますが、トークンを取り戻すのに問題があります
私のインターンシップ プロジェクトでは、基本的な oauth サーバーを作成し、それを既存のプロジェクトに追加しました。モバイル アプリケーションがユーザーを認証ページに送るとき、ユーザーは自分の ID トークンとリダイレクト URL を送信します。
認証が機能し、アクセス トークンとリフレッシュ トークンが生成されます。それらをアプリに戻すのに問題があるだけです。私は自分のアプリと認証サイトの両方をローカルホストしているため、その一部の側面を実際にテストできないと思います。ローカルでホストされている Web サイトにリンクできないため、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 コールバックについても少し読みましたが、これは初めてで、コルドバ アプリで使用する方法がわかりません。