2012-06-26 32 views
1

我想知道當用戶關閉或在oauth流程中單擊Facebook權限窗口上的取消按鈕時是否有任何方式通知父頁面。它是用戶授權應用程序的窗口。帶有URL的窗口:https://www.facebook.com/dialog/oauth?api_key= .....以及「使用Facebook登錄」和「取消」按鈕。我試圖完成的是 - 如果用戶取消或關閉oauth權限窗口,我想打開Facebook簡單共享窗口,他們可以發佈狀態,而無需授權應用程序。如何檢測用戶的Facebook oauth窗口關閉操作

我正在使用JS SDK進行Facebook連接。

+0

你最近怎麼樣?客戶端(JavaScript)或服務器端?你可以發佈你使用的代碼嗎? –

+0

@NitzanTomer我爲此使用了Facebook JS SDK。 – MikeR

回答

2

觀察網址爲用戶取消授權的OAuth網址的變化,它現在將包含字段的數量來描述用戶操作

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

這將成爲用戶後,取消認證的價值

error_reason=user_denied 
&error=access_denied 
&error_description=The user denied your request 

用戶取消之後,認證對話框頁面將被重定向到父頁面,您可以在其中檢查這些錯誤參數。

+0

我正在使用Facebook提供的Facebook連接Facebook的JS SDK。有了這個,如果用戶點擊「取消」,頁面不會真的在任何地方重定向。此外,用戶可以關閉窗口而不是點擊「取消」。 – MikeR

+0

是的,有兩種方法,如果你將用戶重定向到認證頁面,這個方法將起作用,如果你打開一個認證對話框,上面的答案將起作用,用戶總是可以選擇關閉窗口,你將通過關閉事件來檢查這個,但是不與Facebook的SDK。 – MSUH

+0

我有類似的問題。我授權用戶,並要求用戶授予我在他們的信息牆上發佈的權限,但如果用戶拒絕該請求但接受登錄請求,則不會返回任何錯誤。 我希望我的問題有道理。 –

2

此代碼是從documentation for the FB.login method採取:

FB.login(function(response) { 
    if (response.authResponse) { 
    console.log('Welcome! Fetching your information.... '); 
    FB.api('/me', function(response) { 
     console.log('Good to see you, ' + response.name + '.'); 
    }); 
    } else { 
    console.log('User cancelled login or did not fully authorize.'); 
    } 
}); 

正如你所看到的,if (response.authResponse)部分的檢查,而在登錄過程已成功完成,也就是說,用戶允許的應用程序,他登錄到Facebook的。

如果用戶點擊「取消」或關閉彈出窗口,那麼響應中將不會有authResponse參數。

+0

謝謝!會嘗試一下。 – MikeR

相關問題