На данный момент я работаю с API Facebook, и у меня есть небольшая проблема (никогда не работающая с API). Я использую последний PHP SDK 4.0, и люди регистрируются в приложении, которое сохраняет их токен доступа в базу данных. Пользователи могут добавить в свой профиль несколько приложений Facebook (идентификаторы клиентов/секреты), чтобы их приложения, которые выполняли уведомления, находились в одном месте.Facebook PHP SDK - один токен доступа, несколько приложений
Проблема, с которой я сталкиваюсь, заключается в том, что я не могу использовать токен доступа, который извлекается во время входа с приложениями, добавленными пользователями. Поэтому моя проблема в том, что мне нужно запросить новый токен доступа без какого-либо взаимодействия пользователя.
Возможно, есть другой способ, который я не вижу, чтобы использовать токен доступа, который я извлекаю во время процесса входа, с идентификаторами/секретами пользователей, которые пользователи добавляют.
Я всегда извлекаю одну из следующих двух ошибок, когда я использую любую пару ID клиента/Секрет, которую добавил пользователь. (что означает, что они не являются такими же, как ID клиента/Секретный маркер доступа во время был создан Логин)
номер один
Unsupported post request. Please read the Graph API documentation at https://developers.facebook.com/docs/graph-api
Номер Два
Invalid appsecret_proof provided in the API argument
Вот пример того, что мне нужно выполнить.
// Grab an app from the database
$app = App::find($button->app_id);
// Client ID/Secret
$client_id = $app->app_id;
$client_secret = $app->app_secret;
// Grab the access token for the Client ID/Secret from Facebook
$accessToken = explode('=', file_get_contents(
'https://graph.facebook.com/oauth/access_token?client_id=' . $client_id . '&client_secret=' . $client_secret . '&grant_type=client_credentials'
))[1];
// Init the SDK and set the Client ID/Secret
FacebookSession::setDefaultApplication($client_id, $client_secret);
// Find the user
$user = User::find($request->get('user_id'));
// Create a new session
$session = new FacebookSession($user->access_token);
// If the session has been created
if ($session) {
$canvasPage = 'http://google.com/';
$message = 'This is a test message';
$referrer = 'ref-for-google-canvas';
$response = (new FacebookRequest(
$session, 'POST', '/' . $user->id . '/notifications', array(
'access_token' => $accessToken,
'href' => $canvasPage,
'template' => $message,
'ref' => $referrer
)
))->execute();
}