2
我製作了一個CakePHP插件,用於使用Facebook,Twitter,Google和LinkedIn進行社交網絡身份驗證。整個插件工作100%沒有錯誤或錯誤,但最近我試圖通過Facebook登錄,我發現自己無法從API獲取數據。無法從Facebook SDK獲取數據
這是我所做的。
AuthController Facebook的行動
public function facebook(){
$facebookObj = SocialAuth::init('facebook');
$facebookLoginUrl = $facebookObj->getLoginUrl(array('scope' => SocialAuth::getConfig('facebook','permissions'),
'canvas' => 1,
'fbconnect' => 0,
'redirect_uri' => SocialAuth::getConfig('facebook','redirect_uri')));
$this->redirect($facebookLoginUrl);
}
AuthController回調動作
public function callback(){
$facebookObj = SocialAuth::init('facebook');
$facebookInfo = $facebookObj->getUser();
if ($facebookInfo) { // $facebookInfo always return 0 (it was working before >_<)
// ..
}
}
$ facebookInfo調試信息
/app/Plugin/SocialAuth/Controller/AuthsController.php (line 104)
object(Facebook) {
[protected] sharedSessionID => null
[protected] kSupportedKeys => array(
(int) 0 => 'state',
(int) 1 => 'code',
(int) 2 => 'access_token',
(int) 3 => 'user_id'
)
[protected] DROP_QUERY_PARAMS => array(
(int) 0 => 'code',
(int) 1 => 'state',
(int) 2 => 'signed_request'
)
[protected] appId => '503845519711145'
[protected] appSecret => '--secret--'
[protected] user => (int) 0
[protected] signedRequest => null
[protected] state => '59e2aba0d18dcc166d8c4aef0f1668c9'
[protected] accessToken => '{app-id}|{app-secret}'
[protected] fileUploadSupport => false
[protected] trustForwarded => false
[protected] allowSignedRequest => false
}
我該如何解決這個問題?
夥計,你公開發布了你的應用祕密 - 所以儘快去重置吧。 (是的,你用'--secret - '替換了'appSecret' ......但看看你的'accessToken'的第二部分,它應該看起來很熟悉......)至於你的問題,Facebook PHP SDK返回0用戶ID是一個已經討論過很多的問題 - 我不知道SocialAuth是否正在使用,但是您應該能夠從這些討論中獲得一些線索。如果不是,請求SocialAuth的提供者修復它(畢竟,這是一個付費組件,如果我們在這裏談論相同的SocialAuth,對嗎?) – CBroe
SocialAuth它只是我自己製作的一個插件。 –
這對我們來說確實很難修復 - 因爲您正在使用我們無法看到源代碼的自制插件。你的插件是否使用Facebook PHP SDK?停止工作之前,你做了什麼改變?您的插件是否成功地將訪問令牌的代碼作爲oauth進程的一部分進行交換(問這是因爲上述訪問令牌看起來像是應用訪問令牌而不是用戶訪問令牌) – madebydavid