2011-05-02 43 views
0

問題是,當用戶點擊登錄FB按鈕在我的網站,Facebook的API拋出他與要求訪問權限(這是通常的流量)的窗口。但是當用戶選擇代理郵件地址(匿名)時,我想強制用戶只使用他的真實電子郵件ID登錄。與Facebook代理電子郵件防止註冊等

我應該怎麼來處理呢?

我可以檢測到用戶使用代理電子郵件和阻止他註冊,但當時我無法從他的授權的應用程序列表中刪除我的應用程序 - 這意味着我不能讓他到最初的對話框選擇哪些電子郵件他會提供。

+0

請使用相關編程語言的標籤更新您的問題。以前,這個問題被標記爲asp.net,php和ruby-on-rails。 – 2011-05-02 06:26:22

+0

我用一些新發現的信息更新了我的原始答案,我認爲您可能會利用這些信息並幫助您完成您想要的任務。 – 2011-05-10 13:27:06

+0

代理郵件系統有一個很好的理由 - 防止垃圾郵件。除了能夠發送/出售用戶的真實電子郵件地址外,您還有什麼理由強迫用戶提供另一個電子郵件地址? – Neil 2013-06-01 14:47:48

回答

2

你不能強迫用戶經過授權再次對話框,因爲就如Facebook而言,用戶已經安裝了應用程序,並沒有別的需要發生。您可以在這裏做的最好的事情是編寫自己的表單,通知用戶Facebook代理電子郵件地址不可接受,並且您需要一個真實的電子郵件地址。不幸的是,這不會強制用戶給你他們的Facebook帳戶的電子郵件地址,甚至是一個真正的電子郵件地址。儘管這是我們通過Facebook獲得的最好結果,但這只是我們必須面對的問題。

UPDATE 11年5月10日

我瀏覽Facebook的文檔四周,發現存在的老傳統REST API這實際上允許你刪除擴展權限爲您的應用程序從一個方法一個用戶。我認爲你可以使用這個確切的API調用來管理從你的Facebook用戶獲取非代理地址,同時仍然使用本機安裝對話框。

我測試了這個使用FB JS SDK和它的工作!您需要使用的方法是auth.revokeExtendedPermission方法。以下是通過JS SDK和PHP SDK調用該方法的兩個示例。

的Javascript:

<script> 
FB.api({ 
    method: 'auth.revokeExtendedPermission', 
    perm: 'read_stream' 
}, function(response) 
{ 
    console.log(response) 
}); 
</script> 

PHP:

<?php 

$facebook->api(array(
'method' => 'auth.revokeExtendedPermission', 
'perm' => 'email', 
'uid' => $uid 
)); 

因爲這些使用傳統REST API他們不是爲 「支持」 作爲新的圖形API。我沒有看到任何有關將此功能遷移到Graph API的信息。希望他們會。通過圖形API的應用程序(如下)與PHP SDK的

0

調用撤銷然後通過這個非代理要求你的對話框重定向用戶返回解釋。

private function revokeAccess() { 
    $access_token = $this->facebook->getAccessToken(); 
    $result = $this->facebook->api(array(
     'method' => 'auth.revokeAuthorization', 
     'uid' => $this->{facebook id here}, 
     'access_token' => $access_token 
      )); 
    return $result; 
} 

此代碼是php。
這完全刪除了該應用程序。
成功返回1; 0失敗。
$ this-> facebook == facebook對象來自facebook php sdk。