0

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 コールバックについても少し読みましたが、これは初めてで、コルドバ アプリで使用する方法がわかりません。

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 に答える