我在facebook上有一个应用,这是一种用户之间的竞争。每个用户获得积分,得分最多的人获胜。
我将用户id保存在数据库中的一个表中。当用户进入应用程序时,有一个脚本检查他是否已经在表中,如果没有,它将用户id添加到表中。
然后,我有一个页面,显示所有的用户和他们有多少点。我通过图形api通过他的ID获得用户名,然后将其显示在一个漂亮的表上。
唯一的问题是:当一个使用过该应用程序的用户从他在facebook上安装的应用程序中删除它时,我无法再获得他的名字,并且我得到一个未捕获的OAuth异常。
我如何检查用户是否安装了应用程序,这样我才能显示他的名字,如果应用程序目前安装在他的facebook上?
基本上,这是你需要做的。
<?php
include_once("facebook.php");
$facebook = new Facebook(array(
'appId' => YOUR_APP_ID,
'secret' => YOUR_APP_SECRET
));
$user = $facebook->getUser();
try {
$user_profile = $facebook->api('/me');
} catch(FacebookApiException $e) {
$user = null;
}
if($user) {
// authenticated user
$name = $user_profile['name'];
}
为当前登录的用户发出API请求,如果失败,则捕获异常并将$user变量设置为null。然后你可以做一个简单的检查,看看$user是否存在。
我建议检查一下这个客户端。
当用户返回时,你可以执行这个命令来查看权限是否仍然可用,如果没有,再请求一次:
FB.getLoginStatus(function(response){
if(response.status == 'connected'){
appisinstalled-actonthis();
}else{
// request permissions
FB.login(function(response){
if(response.status == 'connected'){
appisinstalled-actonthis();
}else{
handlethecancelpermissions();
}
});
}
});
在appisinstalled-actonthis函数中,您可以添加名称和/或配置文件pic
只是我的两分钱!