物語:
ここでこのパズルを教えてくれる社会統合の専門家を探しています。私のWebサーバーは、春のセキュリティを使用してユーザーのサインイン、サインアップを認証しています。最近、Web サーバーに春のソーシャルを実装しましたが、すべてが非常にスムーズに進みました。例として fb を取り上げます。ユーザーが Facebook からログインすると、Spring Social は URL を構築し、ユーザーを Facebook にリダイレクトします。ユーザーが Facebook で認証されると、ユーザーは自分のサイトにリダイレクトされます。
パズル:
同じ「ログイン」機能を持つモバイル アプリ (html5 + phonegap) を実装する必要があります。Facebookの統合ページにアクセスしました。html5 アプリの認証を行う方法はいくつかあります。サーバー側の実装を選択しました: http://developers.facebook.com/docs/authentication/server-side/クライアント側のログインよりも.
私が最初に遭遇する問題は、モバイル アプリでのリダイレクトです。アプリ ウィンドウではなく、プロバイダーのログイン ページにリダイレクトするポップアップ ウィンドウが必要です。ajax 呼び出しでリダイレクト URL を取得し、childbrowser phonegap プラグインで新しいウィンドウを開くことができました。問題は、ユーザーがプロバイダーを介して認証された場合、別のブラウザーにあるため、サーバーが「ユーザー認証済み」をクライアントに通知する簡単な方法がないことです。
サンプルコード
onFBlogin: function(){
Ext.Ajax.request({
url: APP.domain + "api/mobile/signin/facebook.json",
method: 'POST',
success: function(result, request) {
var json = JSON.parse(result.responseText);
window.plugins.childBrowser.onLocationChange = function (url) {
if(url==APP.domain+"api/mobile/success"){
window.plugins.childBrowser.close();
}
};
window.plugins.childBrowser.showWebPage(json.outhurl,{ showLocationBar: true });
},
failure: function(result, request) {
console.log("request facebook signin redirect url" + result);
},
});
}
通常、春のセキュリティでは、ユーザーが残りのAPIを介して認証された場合、クライアントはリクエストを投稿し、コールバックの成功を通じて認証されたトークンを取得できます。これらのトークンは、残りの API 呼び出しごとに再利用できます。上記のコードによると。認証が完了したかどうか、いつサーバーからクライアントにトークンを送信する必要があるかを知ることができません。
何かアイデアをいただければ幸いです。ありがとう!