【发布时间】:2012-01-31 19:02:20
【问题描述】:
我正在升级我现有的 FB 应用程序,并且非常疯狂地试图获得一个简单的 PHP iframe 画布应用程序来授权和验证(以及使用 SSL)。没看过这么多例子……
这是我卡住的地方:在用户授权应用程序并且应用程序对用户进行身份验证(我能够使用令牌 OK 发出图形请求)后,redirect_uri 发生,整个页面刷新,离开 Facebook然后只显示我的“Canvas URL”页面的内容(带有我的服务器的域),而不是 Facebook 上的 iframe。
我目前将此作为粗略的两步过程......
这是我的代码在第一页 (index.php) 上的样子:
<?php
require('src/facebook.php');
$app_id = '123456789';
$app_secret = '1234secrets1234';
$canvas_page = "https://apps.facebook.com/123456789/";
$canvas_url = "https://myserver.com/apptest/";
$code = $_REQUEST['code'];
if(!$code){
$display= 'page';
$scope= 'manage_pages, offline_access, read_insights, publish_stream, user_about_me, user_likes, email';
$redirect_url = 'https://myserver.com/apptest/step2.php';
$oauth_url = 'https://www.facebook.com/dialog/oauth?canvas=1&client_id='.$app_id.'&display='.$display.'&redirect_uri='.urlencode($redirect_url).'&scope='.$scope;
$config = array('appId' => $app_id,'secret' => $app_secret,'cookie' => true,'domain' => true);
$facebook_client = new Facebook($config);
echo "<script type=\"text/javascript\">top.location.href = \"".$oauth_url."\";</script>";
}
?>
和第二页(step2.php):
<?php
require('src/facebook.php');
$app_id = '123456789';
$app_secret = '1234secrets1234';
$canvas_page = "https://apps.facebook.com/123456789/";
$canvas_url = "https://myserver.com/apptest/";
if($_REQUEST['code']){
$code=$_REQUEST['code'];
$redirect_url = 'https://myserver.com/apptest/step2.php';
$link="https://graph.facebook.com/oauth/access_token?canvas=1&client_id=".$app_id."&redirect_uri=".urlencode($redirect_url)."&client_secret=".$app_secret."&code=".$code;
$string = file_get_contents($link);
$auth_token=substr($string, 13, 150);
$graph_url = "https://graph.facebook.com/me?access_token=".$auth_token;
$user = json_decode(file_get_contents($graph_url));
echo("Hello " . $user->name);
}
同样,一旦用户授权了应用,并且应用对用户进行了身份验证,图形调用就会起作用。
有什么想法吗?
【问题讨论】:
标签: php facebook iframe canvas oauth-2.0