【发布时间】:2014-08-17 04:17:08
【问题描述】:
我有一个 facebook pagetab 应用程序,但我陷入了以下情况
我需要检查用户是否登录
如果没有,则重定向到具有
user_likes,publish_actions,email权限的登录网址
还有用户是否喜欢页面。
如果不喜欢,则显示喜欢的门
现在在上面我遇到了我在 FB 页面标签中遇到的错误 (iFRAM)
拒绝在框架中显示“https://www.facebook.com/v2.0/dialog/oauth?client_id=839424369402407&redire…c8682d9a9fb5b&sdk=php-sdk-4.0.9&scope=email%2Cuser_likes%2Cpublish_actions”,因为它将“X-Frame-Options”设置为“DENY”。
现在我想用 JS sdk 实现流程,获取访问令牌,然后使用 ajax 调用将其传递给 php 代码
有没有更好的办法解决这种情况??
这里是代码
try {
$session = $helper->getSessionFromRedirect();
} catch(FacebookRequestException $ex) {
error_log($ex->getCode());
error_log($ex->getMessage());
} catch(\Exception $ex) {
error_log($ex->getCode());
error_log($ex->getMessage());
}
if($_GET['error']=="access_denied"){
header("location:/login/");
exit;
}else if (isset($session) || (isset($_SESSION['fb_user_session_access_token'])) && !empty($_SESSION['fb_user_session_access_token'])) {
if(isset($session))
$_SESSION['fb_user_session_access_token'] = $session->getToken();
else{
$access_token = $_SESSION['fb_user_session_access_token'];
$session = new FacebookSession($access_token);
}
try {
$user_profile = (new FacebookRequest(
$session, 'GET', '/me'
))->execute()->getGraphObject(GraphUser::className());
$email = $user_profile->getProperty('email');
$name = $user_profile->getProperty('name');
$fb_id = $user_profile->getProperty('id');
$query = mysql_query("select id, email from ntuc_users where email = '$email'");
$user_found = mysql_num_rows($query);
if(!$user_found){
//code deleted
exit;
} catch(FacebookRequestException $e) {
error_log($e->getCode());
error_log($e->getMessage());
//if token get expired
$loginUrl = $helper->getLoginUrl(array('req_perms' => 'email'));
header("location:".$loginUrl);
exit;
}
}
else
{
$loginUrl = $helper->getLoginUrl(array('req_perms' => 'email'));
header("location:".$loginUrl);
exit;
}
多谢了
【问题讨论】:
-
关于like-gate,停止你现在正在做的事情。自 2014 年 11 月 5 日起,这将违反平台政策
-
@BjörnKaiser 你能解释一下
what is wrong吗?? -
首先,您正在构建的(如门控应用程序)违反 Facebook 平台政策,其次:您需要提交 user_likes 和 publish_actions 权限以供批准,至少 user_likes 不会由于上述原因,批准了您的应用程序。这更像是一个仅供参考,而不是解决您的问题,但这就是 cmets 的用途,我只是想为您节省一些工作;-)
标签: php facebook facebook-graph-api