我正在用PHP创建一个Twitch通知web应用程序。
目前,身份验证工作正常:
客户端想要使用app ->重定向在Twitch网站上接受请求范围->重定向在我的app网站上与一个"code"参数->"code"发送curl请求->响应包含accessToken.
我将accessToken和客户端用户名存储在$_COOKIE和$_SESSION变量中(设置$_COOKIE并不适用于所有web浏览器)。
之后,我必须检查(实时?)用户是否有新的关注者。某些web应用程序,如TNotifier,在这方面做得很好……但我不知道怎么做。
在Twitch API,我们只有以下请求的可能性列出所有这些追随者。我直接想到,我将不得不一次又一次地提出请求(有一秒钟的延迟),并将新请求与上一个请求进行比较……但我认为还有其他方法可以做到这一点吗?
下面是请求:
curl -H 'Accept: application/vnd.twitchtv.v2+json' '
-X GET https://api.twitch.tv/kraken/channels/test_user1/follows
和JSON响应:
{
"_links": {
"next": "https://api.twitch.tv/kraken/channels/test_user1/follows?limit=25&offset=25",
"self": "https://api.twitch.tv/kraken/channels/test_user1/follows?limit=25&offset=0"
},
"follows": [
{
"_links": {
"self": "https://api.twitch.tv/kraken/users/test_user2/follows/channels/test_user1"
},
"user": {
"_links": {
"self": "https://api.twitch.tv/kraken/users/test_user2"
},
"staff": false,
"logo": null,
"display_name": "test_user2",
"created_at": "2013-02-06T21:21:57Z",
"updated_at": "2013-02-13T20:59:42Z",
"_id": 40091581,
"name": "test_user2"
}
},
...
]
}
这是我的代码,但仍然认为存在更好的方法…
$uknown=""; //to initialize my loop function.
comparaison($uknown);
function comparaison($u){
$options = array(
'http' => array(
'header' => 'Accept: application/vnd.twitchtv.v2+json',
'method' => 'GET',
)
);
$context = stream_context_create($options);
$result = file_get_contents('https://api.twitch.tv/kraken/channels/test_user1/follows', false, $context);
$decode_result = json_decode($result, true);
$follow=$decode_result['follows'][0];
$user=$follow['user'];
$last_follower=$user['display_name'];
if($last_follower != $u){
haveANewFollower($last_follower);
}
comparaison($last_follower);
}
TNotifier是否可能使用另一种方式来检查新的关注者?
这是唯一的方法,因为没有推的方法做追随者,所以你必须依靠拉。对于订阅者,有可能侦听新订阅者的聊天消息,但由于这对追随者不起作用,因此您只能依赖使用kraken api的pull方法。