我正在使用PHP SDK的PHP SDK v5,並試圖獲得長久的USER訪問令牌。
我得到它,使長壽一次,並保存到我的數據庫,然後我去到另一個頁面,我用它來獲取訪問Facebook頁面。到此爲止,一切都很順利。然後我刷新我的頁面,並且User AccessToken的[「expiry at」]設置爲1970-01-01。
我不知道發生了什麼,因爲我不重寫數據庫中的訪問令牌。最有線的是,這個令牌與Facebook一起工作。所以在刷新之前和之後都有我的代碼和響應。Facebook PHP SDK刷新站點後長期訪問令牌過期
$config = array();
$config['app_id'] = xxx
$config['app_secret'] = xxx
$config['fileUpload'] = false;
if(!empty(tokenFromDatabse)){
$config['default_access_token'] = tokenFromDatabse;
}
$fb = new Facebook($config);
$oAuth2Client = $fb->getOAuth2Client();
if(!empty(tokenFromDatabse)){
try{
$tokenMetadata = $oAuth2Client->debugToken($fb->getDefaultAccessToken());
$tokenMetadata->validateAppId($config['app_id']);
$tokenMetadata->validateExpiration();
}
這只是所有的行動,當然有代碼。而現在,來自Facebook的第一反應是:
object(Facebook\Authentication\AccessTokenMetadata)#689 (1) {
["metadata":protected]=>
array(7) {
["app_id"]=>
string(15) "xxx"
["application"]=>
string(13) "Local_app"
["expires_at"]=>
object(DateTime)#691 (3) {
["date"]=>
string(26) "2015-10-20 16:07:56.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/Berlin"
}
["is_valid"]=>
bool(true)
["issued_at"]=>
object(DateTime)#692 (3) {
["date"]=>
string(26) "2015-08-21 16:07:56.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/Berlin"
}
["scopes"]=>
array(3) {
[0]=>
string(12) "manage_pages"
[1]=>
string(13) "publish_pages"
[2]=>
string(14) "public_profile"
}
["user_id"]=>
string(15) "xxx"
}
和後刷新看起來像這樣:
object(Facebook\Authentication\AccessTokenMetadata)#689 (1) {
["metadata":protected]=>
array(7) {
["app_id"]=>
string(15) "xxx"
["application"]=>
string(13) "Local_app"
["expires_at"]=>
object(DateTime)#691 (3) {
["date"]=>
string(26) "1970-01-01 01:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/Berlin"
}
["is_valid"]=>
bool(true)
["issued_at"]=>
object(DateTime)#692 (3) {
["date"]=>
string(26) "2015-08-21 16:07:56.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/Berlin"
}
["scopes"]=>
array(3) {
[0]=>
string(12) "manage_pages"
[1]=>
string(13) "publish_pages"
[2]=>
string(14) "public_profile"
}
["user_id"]=>
string(15) "xxx"
}
可能是一個錯誤訂閱這個bug https://developers.facebook.com/bugs/111761385842972 –