我有一個小問題涉及Facebook SDK 4.4.0/API 2.3用戶的電子郵件的檢索。如何使用SDK 4.4.0和API 2.3從Facebook用戶配置文件中檢索電子郵件?
我通過Facebook的開發者創建領域我的應用程序,實際上我在我的PHP腳本的目標是通過我的Facebook應用程序登錄到Facebook來獲取登錄用戶的一些信息在我的網站上創建一個基本的輪廓。 我有兩個PHP腳本,第一個獲取Facebook的登錄URL,第二個獲取認證後的用戶數據。
的login.php
require_once(dirname(__FILE__).'/libs/facebook-php-sdk-v4-4.0-dev/autoload.php');
Facebook\FacebookSession::setDefaultApplication($a_config['settings']['facebook_app_id'], $a_config['settings']['facebook_app_secret']);
$o_helper = new Facebook\FacebookRedirectLoginHelper($s_facebook_login_backurl);
$s_facebook_login_url = $o_helper->getLoginUrl();
通過這個$ s_facebook_login_url我的Facebook應用程序登錄,驗證自己作爲一個用戶,然後回到我的第二個腳本通過參數$ s_facebook_login_backurl。在這裏,我有我的命令從我的配置文件中獲取數據。我需要的一切工作都很好,除了電子郵件,這個元素沒有找到。
registration.php的
require_once(dirname(__FILE__).'/libs/facebook-php-sdk-v4-4.0-dev/autoload.php');
Facebook\FacebookSession::setDefaultApplication($a_config['settings']['facebook_app_id'], $a_config['settings']['facebook_app_secret']);
$o_social = Facebook\FacebookSession::newAppSession();
try {
$o_social->validate();
}
catch(...){
// exceptions
}
或
$o_helper = new Facebook\FacebookRedirectLoginHelper($s_facebook_login_backurl);
$o_social = $o_helper->getSessionFromRedirect();
然後
$s_request = '/me?fields=id,name,email,last_name,first_name,middle_name';
$o_request = new Facebook\FacebookRequest($o_social, 'GET', $s_request);
$o_response = $o_request->execute();
$o_graph_object = $o_response->getGraphObject();
$a_media = $o_graph_object->asArray();
$s_facebook_id = $a_media['id'];
$s_facebook_name = $a_media['first_name'];
$s_facebook_inbetweenname = $a_media['middle_name'];
$s_facebook_surname = $a_media['last_name'];
$s_facebook_email = $a_media['email'];
的問題是,s_facebook_email最後一個變量$完全是空的。
在facebook的開發人員區域中,在Graph API Explorer中,我甚至會將我的GET請求測試到我的Facebook應用程序,並檢索電子郵件,我設置用戶的權限(用戶數據權限)和電子郵件(在擴展權限中),但通過SDK電子郵件是唯一缺少的元素。
我想甚至從我的用戶設置,刪除應用程序,並再次給予身份驗證,但沒有奏效。 有沒有人有一些想法來獲得電子郵件? 我在網上找幾乎總是相同的建議,但可能我錯過了一些東西。
在此先感謝
你需要問你的登錄對話框中的呼叫權限。去檢查'getLoginUrl'方法的文檔。 – CBroe