0

アプリを作成していますが、アプリを認証したユーザーに通知を送信するためのコードを取得できます。

ブラウザで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:実際、私は今それを機能させています:)

4

0 に答える 0