2012-03-20 67 views
4

我有網站,用戶可以用他們的Facebook帳戶登錄。 我使用javascript FB.login方法來顯示Facebook登錄對話框。默認情況下,它會觸發顯示新的彈出窗口。許多用戶在其瀏覽器中禁止彈出窗口。如何強制facebook登錄對話框顯示在用戶點擊登錄按鈕的同一個窗口中? 我可以看到它在此工作website如何在同一窗口而不是彈出窗口中打開Facebook登錄對話框?

當用戶點擊登錄按鈕時,他被重定向到Facebook。登錄FB後,他被重定向回原始網站。一切都在同一瀏覽器選項卡中。

回答

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將登錄的用戶,並與查詢字符串一些東西重定向他們回到您的網址:

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? – 2014-05-08 00:46:18

+0

我嘗試這種方式,但只有在Facebook重定向到我的URI「granted_scopes = email,public_profile&denied_scopes#_ = _」後纔得到這些參數,接下來應該怎麼做?任何建議,歡迎〜 – RRTW 2017-07-17 09:49:30

+0

謝謝,這節省了我的一天! – 2017-07-23 09:55:51

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

謝謝你的回答。如果您不使用表單,我更喜歡解決方案。我有div元素附加onclick事件。用戶點擊div(登錄按鈕)後,調用FB.login方法。 – 2012-03-21 05:59:46

0

按照Facebook的documentation可以使用display=page將在同一個瀏覽器窗口中打開。

+1

有人請解釋爲什麼這是downvoted? – coderama 2015-04-25 09:12:14

+0

我得到一個錯誤:'「display」必須是「popup」,「dialog」,「iframe」,「touch」,「async」,「hidden」或「none」 – shlensky 2016-03-15 16:07:49

0

我的問題是我啓用了「External Links」模塊。它將facebook網址視爲外部網頁,並立即添加target =「_ blank」,導致在新窗口中打開所有點擊。

相關問題