如何使用PHP SDK在特定时间将FB通知发送到不同的时区?

时间:2017-03-28 23:01:54

标签: php facebook

我的网站正在大力传播FB。只有FB登录,所有与会员的通信都通过Facebook进行。使用FB api通知用户他们关心的站点中的活动。用户可以选择三个选项:

  1. 从不通知
  2. 每天通知一次(对于MVP版本,我对硬编码时间很好,比如9,在停泊时,但可能是为了让用户可以选择何时想要通知过去24小时内发生的所有事情)< / LI>
  3. 在旅途中通知
  4. 第一和第三是容易的,我的担忧在于第二种选择。基本上它类似于时事通讯。到目前为止,我对这个过程的想法是:

    • 当用户关注的某些操作发生时,有关该操作的通知将保存在数据库中
    • 如果用户在预定时间之前登录网站,则通知被标记为已读
    • 如果用户未在预定时间之前登录网站,则未读通知将包含在cron作业中
    • 每小时运行一次cron作业。它将用户时区与当前时间匹配,以便只有醒着的用户才会收到通知。用户将获得基本的&#34;网站中有新的东西&#34;通知。

    问题:从FB我只能得到整数的偏移,而不是实际的时区。我花了一些时间阅读有关时区和不同格式的内容,这让我觉得FB调用时区会导致偏移。

    将新通讯(在我的情况下通知)发送到不同的时区是很复杂的,但有很多好的资源可用。但是,似乎最好的方法是将用户时区保存为TZ数据库格式America/New_York。所以我的问题是双重

    1. 是否有可能以某种方式从Facebook获取用户时区?
    2. 如果没有,那么我最好的行动是什么?重要的是我不在乎用户是否在确切时间收到通知。我的意思是我不关心夏天的时差。如果用户可以在停泊,下午和晚上之间进行选择(例如,如果他选择了停泊,那么他会收到9:00 +/- 1小时的通知)。我对这些想法持开放态度,在一定程度上我的主要目标是让MVP运行。

1 个答案:

答案 0 :(得分:0)

$ch = curl_init("https://graph.facebook.com/v2.6/" . $user_id . "?fields=timezone&access_token=" . $fb_access_token);
curl_setopt_array($ch, array(
    CURLOPT_RETURNTRANSFER => 1
));

$result = curl_exec($ch);

您可以从打开的图表API获取用户时区。

要将偏移转换为实际时区,请参阅此处的答案:Convert UTC offset to timezone or date