无法发送自动通知?

时间:2012-11-18 20:43:11

标签: facebook notifications send sendmessage

我正在编写一个应用程序,我可以让我的代码向已经验证我的应用程序的用户发送通知。

只要我在浏览器中打开php页面,它就会向用户发送通知。这就像一个魅力,直到我试图让代码在没有用户启动的情况下发送通知。

我一直在使用令牌遇到麻烦,而且无法让它发挥作用。我已经尝试将访问令牌保存到我的数据库,并让代码使用这些令牌,但无济于事。然后我尝试用长期令牌交换这些令牌,一切正常,我得到60天到期日期的令牌,但是当我尝试使用它们时,它只是不起作用。

有没有人有过让应用发送通知或消息的经验?我在这里没有想法..

编辑 我将详细说明我是如何做事的,以及做什么和不做什么: 我在大多数情况下使用php sdk,比如初始化应用程序:

  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));
}

直到现在,一切都运作良好。我甚至可以使用这段代码发送通知(我花了一天的时间才真正开始工作,很难找到关于此的信息):

$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: 实际上,我现在正在使用它:)

0 个答案:

没有答案