JavaScriptのポップアップを使用してFacebookにユーザーを認証させようとしています。今、私は持っています:
<input type="button" value="Connect with Facebook" onclick="window.open('https://graph.facebook.com/oauth/authorize?client_id=XXXXXXXXXXX&redirect_uri=http://example.com/step2&display=popup')" />
ただし、ユーザーがFacebook経由でログインすると、ポップアップにはFacebook.comホームページが表示されるだけです。ポップアップでユーザーを認証し、グラフAPIからユーザーデータの取得を開始できるようになります。
これを行うためのより良い/簡単な方法はありますか?簡単な例に感謝します。
ありがとうございました。
facebookのoauth2には2つの手順が含まれます。authorizeを呼び出してコードを取得し、access_tokenを呼び出してトークンを取得します。ポップログインに対処する1つの方法:
あなたがやったようにログインURLを新しいウィンドウで開くウィンドウはすぐにwindow.closeになります。
メインページで、window.openコードの後に、JavaScriptコードを追加して、ポップアップが閉じているかどうかを検出し、Cookieをキャプチャします。
var signinWin;
$('#FacebookBtn').click(function () {
var pos = screenCenterPos(800, 500);
signinWin = window.open("[URL]", "SignIn", "width=780,height=410,toolbar=0,scrollbars=0,status=0,resizable=0,location=0,menuBar=0,left=" + pos.x + ",top=" + pos.y);
setTimeout(CheckLoginStatus, 2000);
signinWin.focus();
return false;
});
function CheckLoginStatus() {
if (signinWin.closed) {
$('#UserInfo').text($.cookie("some_cookie");
}
else setTimeout(CheckLoginStatus, 1000);
}
なぜ単純に...
function authorizeAppInPopup() {
FB.login(function(response) {
if (response.authResponse) {
// User authorized app
} else {
// User cancelled login or did not fully authorize
}
}, {scope: 'publish_stream'});
}
??? :]
https://developers.facebook.com/docs/reference/javascript/FB.login/
この記事をご覧ください: ポップアップ認証をカスタマイズするためにPHPおよびjavascript を使用してFacebookポップアップ認証ウィンドウを作成.
Avnerが言うように、子ウィンドウからのコールバック機能と、ウィンドウが閉じられるのを監視するタイマーの両方を実行することをお勧めします。そのようにして、特定のアクションなしで子ウィンドウを閉じた場合、親ウィンドウで適切なアクションを実行できます。
**On Child**
// Set oAuthToken from server side when it comes back from authenticating
// and you have the token on the server side.
var oAuthToken = "";
oAuthToken = "--STRING INSERTED BY SERVER SIDE CODE--";
window.opener.pbFromPopup(oAuthToken);
**On Parent :**
function CheckLoginStatus() {
if (authWindow.closed) {
// Handle error if authentication window is closed
// without any action on Allow or Deny
alert("window closed");
//location.href = "errorPage.aspx?error=authwinclosed;
}
else setTimeout(CheckLoginStatus, 1000);
}
function pbFromPopup(token) {
// Function called from child window,
// token is passed back from child
authWindow.close();
// Put token in a hidden form field and submit the form to pass
// it back to the server
$("#authToken").val(token);
$("#form1").submit();
}