アプリを作成していますが、アプリを認証したユーザーに通知を送信するためのコードを取得できます。
ブラウザでphpページを開く限り、ユーザーに通知が送信されます。これは、ユーザーが開始せずに通知を送信するコードを取得しようとするまでは、魅力のように機能します。
トークンで問題が発生し続け、それを機能させることができません。アクセストークンをデータベースに保存し、コードにそれらのトークンを使用させようとしましたが、役に立ちませんでした。次に、それらのトークンを長寿命のトークンと交換しようとしました。すべて正常に機能し、有効期限が60日のトークンを取得しますが、それらを使用しようとすると、機能しません。
アプリに通知やメッセージを送信させた経験はありますか?私はここでアイデアがありません。
編集私は物事をどのように行ったか、そして何が機能し、何が機能しないかについて少し詳しく説明します:私はアプリの初期化など、ほとんどのことにphpsdkを使用しています:
require_once("facebook.php");
$config = array();
$config['appId'] = 'xxxx';
$config['secret'] = 'xxxx';
$config['fileUpload'] = false; // optional
$facebook = new Facebook($config);
$user_id = $facebook->getUser();
$access_token = $facebook->getAccessToken();
次に、ユーザーがログインしているかどうかを確認します。ログインしていない場合は、ログインページなどに送信します。
if($user_id) {
try {
$user_profile = $facebook->api('/me?fields=friends.fields(picture,name,gender,link),name','GET');
} catch(FacebookApiException $e) {
$login_url = $facebook->getLoginUrl();
header( $login_url ) ;
}
} else {
$login_url = $facebook->getLoginUrl();
header( $login_url ) ;
}
次に、私のアプリはhtmlなどを描画し、正常に動作します。コードの最後で、ユーザーacces_tokenを有効期間の長いトークンと交換します。
$existingtoken = $access_token;
$token_url = "https://graph.facebook.com/oauth/access_token?" .
"client_id=" . $config['appId'] .
"&client_secret=" . $config['secret'] .
"&grant_type=fb_exchange_token" .
"&fb_exchange_token=" . $existingtoken;
$new_app_token = file_get_contents($token_url);
$new_app_token = str_replace("access_token=", "", $new_app_token);
$NewToken = str_replace("&expires=", "", $new_app_token);
$mystring = $new_app_token;
$findme = '&expires=';
$pos = strpos($mystring, $findme);
// check if the token actually is long-lived and has the expires data
if ($pos === false) {
echo "Error getting long lived token.<br>";
} else {
$expirationtime = substr($mystring, ((int)$pos+9));
}
今までは、すべてがうまく機能しています。このコードを使用して通知を送信することもできます(実際にこれを機能させるのに1日かかりましたが、これに関する情報は簡単には見つかりません):
$notificationdata = array(
'href'=> 'https://apps.facebook.com/MY_APP/',
'access_token'=> $app_token,
'template'=> '180 char string as information'
);
$sendnotification = $facebook->api('/' . $user_id . '/notifications', 'post', $notificationdata);
EDIT2:実際、私は今それを機能させています:)