2012-03-20 15 views
4

私は、ユーザーが自分のFacebookアカウントでログインできるウェブサイトを持っています。 javascript FB.loginメソッドを使用してFacebookログインダイアログを表示しています。デフォルトでは、新しいポップアップウィンドウが表示されます。多くのユーザーがブラウザにポップアップを禁止しています。ユーザーがログインボタンをクリックしたのと同じウィンドウにフェイスブックのログインダイアログを表示させるには? これで動作することがわかりますwebsiteポップアップウィンドウの代わりに同じウィンドウでFacebookログインダイアログを開くには?

ユーザーが[ログイン]ボタンをクリックすると、彼はFacebookにリダイレクトされます。 FBにログインした後、元のWebサイトにリダイレクトされます。同じブラウザタブ内のすべて。

答えて

12

参照:https://developers.facebook.com/docs/reference/dialogs/oauth/

むしろFB.loginは()、ちょうどこのようなあなたのページへのリンクを追加使用するよりも:

<a href="https://www.facebook.com/dialog/oauth/?client_id=YOUR_APP_ID&redirect_uri=YOUR_REDIRECT_URL&state=YOUR_STATE_VALUE&scope=COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES">LOGIN!</a>

Faceboo kは、その後にユーザーをログインし、クエリ文字列にいくつかのグッズで戻ってあなたのURLにリダイレクトします:

YOUR_REDIRECT_URI? 
    error_reason=user_denied 
    &error=access_denied 
    &error_description=The+user+denied+your+request. 
    &state=YOUR_STATE_VALUE 
+0

YOUR_REDIRECT_URLはおそらくurl_encodedですか? –

+0

私はこの方法を試してみましたが、facebookが私のURI「granted_scopes = email、public_profile&denied_scopes#_ = _」にリダイレクトした後にこれらのパラメータしか得られませんでした。すべての提案は歓迎です〜 – RRTW

+0

ありがとう、これは私の一日を保存! –

0

セットディスプレイタッチトリックを行う

form method="get" action="https://graph.facebook.com/oauth/authorize" id="openid_form">  
    <input type="hidden" value="" name="client_id" id="client_id"/> 
    <input type="hidden" value="touch" name="display" id="display"/> 

    <input type="hidden" value="http://www.mobileborg.com/modules/openid/fb_callbackuri.php" name="redirect_uri" id="redirect_uri"/> 
    <input type="hidden" value="email,read_stream,user_location,user_hometown,read_friendlists,user_photos,user_videos,publish_stream,offline_access" name="scope" id="scope"/> 

    <div style="display:block"> 
    <input type="hidden" name="oid_name" id="oid_name"/> 
    <input type="hidden" size="40" class="openid-identifier" name="openid_identifier" id="openid_identifier"/> 
    <input type="submit" style="display:none" value="Login" id="submit-button"/> 
    </div> 
</form 
+0

ありがとうございました。私はあなたがフォームを使わないところの解決策を好むだろう。私は、onclickイベントが添付されたdiv要素を持っています。ユーザーがdiv(ログインボタン)をクリックすると、FB.loginメソッドが呼び出されます。 –

0

同じブラウザウィンドウで開きますdisplay=pageを使用することができますFacebookのdocumentationを1として。

+1

誰かがこれをなぜ落としたのか説明してください。 – coderama

+0

「表示」は「ポップアップ」、「ダイアログ」、「iframe」、「タッチ」、「非同期」、「非表示」、または「なし」のいずれかである必要があります。 – shlensky

0

私の問題は、「External Links」モジュールを有効にしていたことでした。それはfacebookのURLを外部として見て、すぐにtarget = "_ blank"を追加し、すべてのクリックを新しいウィンドウで開くようにしました。

関連する問題