Facebook 画布应用程序“redirect_uri”在授权和身份验证后突破 iframe

2024-02-21

我正在升级我现有的 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);
} 

同样,一旦用户授权了应用程序,并且应用程序已对用户进行了身份验证,图形调用就会起作用。

有任何想法吗?


导航到 OAuth 对话框时,网页(不是您的应用程序所在的框架)将导航到 OAuth URL。要在身份验证后返回 Facebook iframe,您需要将 OAuth 重定向 URL 设置为 canvas_page URL。上面显示的代码在重定向时导航到 myserver 的 URL,因此您的应用程序占据整个页面(因为您在导航到 OAuth 对话框时离开了 Facebook iframe)。 canvas_url 处的代码需要确定是否是通过授权输入(成功或失败),还是在身份验证后使用有效的访问令牌输入。

此外,您的 canvas_page URL 似乎由 facebook 应用程序主机和您的应用程序 ID 组成。它应该是 facebook 应用程序主机和您的应用程序名称(重定向 URL 应与应用程序开发人员页面上的“Canvas 页面”URL 相同)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Facebook 画布应用程序“redirect_uri”在授权和身份验证后突破 iframe 的相关文章

随机推荐

  • 如何在 NancyFX 中写入流输出?

    我正在使用 Nancy 编写一个简单的 Web 应用程序 至少一个请求会导致长度未知的流 因此我无法提供Content Length 我想用Transfer Encoding chunked 或 在这种情况下同样可以接受 Connectio
  • 在 Ruby 中迭代无限序列

    我正在尝试解决 Project Euler 问题 12 三角形数序列是通过将自然数相加生成的 数字 所以第 7 个三角形数 将为 1 2 3 4 5 6 7 28 前十项是 1 3 6 10 15 21 28 36 45 55 让我们列出前
  • PHP XML/HTML DOM 获取带有空格的 CSS 类属性

    我有以下问题 我正在使用 PHP XML DOM 解析器 当我解析现实世界的 HTML 时 许多元素的 class 属性中都有空格 因此这些元素实际上有多个 CSS 类 但是 当我使用 getAttribute 查询 DOMNode 时 我
  • 如何使用 REGEXP_SUBSTR 解析数据?

    我有一个像这样的数据集 见下文 我尝试提取形式为 variable number of digits hyphen only one digit 的数字 with mcte as select ILLD ELKJS 00000000 ELK
  • Composer 软件包已更新但未安装

    做完之后 sudo php composer phar update 我得到以下信息 Loading composer repositories with package information Updating dependencies
  • 通过Java获取Windows文件关联

    我以为这会是一件容易的事 但是 我希望我的 Java 程序能够获取用户的 Windows 文件关联 换句话说 我想知道用户使用什么来打开 txt文件 cvs文件等 assoc 和 ftype 命令提供该信息 但不提供给用户 换句话说 如果我
  • stderr 上的 Paramiko recv()/read()/readline(s)() 返回空字符串

    我正在使用 paramiko 收集远程主机上的一些信息并在阅读时遇到问题 read readline readlines 来自stderr渠道 有时stderr read 返回一个空字符串 在我看来 它看起来像是竞争条件的结果 然而 根据我
  • 计算每列或行非零元素平均值的有效方法

    我有一个 numpy 数组 用于存储用户对电影的评分 评分介于 1 到 5 之间 0 表示用户没有对电影进行评分 我想计算每部电影的平均评分 以及每个用户的平均评分 换句话说 我将计算每列或每行非零元素的平均值 是否有一个有效的 numpy
  • 如果已经登录,则正确跳过登录活动

    我的启动器图标当前启动登录活动 我已将登录状态存储在 SharedPreferences 中 有什么办法可以properly跳过登录活动并直接进入主要活动 无需any用户界面故障 所有现有的解决方案涉及finish in onCreate
  • 更改 XML 标签名称

    我想转换一个我已经解析过的 XML 文档XmlSlurper 相同的 XML 标记名称应替换为id属性 所有其他属性都应该被删除 从这段代码开始 def xml
  • 未绑定 play.api.db.slick.DatabaseConfigProvider 的实现

    我无法顺利使用 play 2 5 x 我收到以下运行时错误 ProvisionException Unable to provision see the following errors 1 No implementation for pl
  • 复制 Groovy 类属性

    我想要将对象属性复制到另一个对象以通用方式 如果目标对象上存在属性 我从源对象复制它 我的代码使用良好扩展元类 http groovy codehaus org gapi groovy lang ExpandoMetaClass html
  • javax.el.PropertyNotFoundException:目标无法访问,标识符“登录”解析为 null Spring + JSF [重复]

    这个问题在这里已经有答案了 我无法解决使用 Autowired 服务获取 null 的问题 这是我的代码 我的配置文件 应用程序上下文 xml
  • 如何将 Java 组合框中的项目居中

    Java 中的组合框是否有一种方法可以将组合框中的项目居中 我尝试了这个但没有成功 myCombobox setAlignmentY CENTER ALIGNMENT Thanks 试试这个链接 如何使用组合框 Java 教程 gt 使用
  • 使用 PHP Mail() 发送附件?

    我需要通过邮件发送 pdf 文件 可以吗 to xxx subject Subject message Example message with b html b headers MIME Version 1 0 r n headers C
  • T get()”是什么意思? (还有用吗?)

    这似乎是有效的 Java 语法
  • 如何使用存储过程在 mysql 中选择和插入值

    我是使用存储过程的新手 我有一个从表中获取值的查询 之后 我需要将结果插入到另一个表中 这是我的查询 SELECT a gender b purpose abroad as per recorded travel b country nam
  • Minecraft 克隆的最佳盒子选择方法

    我正在制作 Minecraft 克隆作为我的第一个 OpenGL 项目 但卡在了框选择部分 做出可靠的盒子选择的最佳方法是什么 我一直在研究一些 AABB 算法 但它们都没有足够好地解释它们到底做了什么 尤其是经过超级调整的算法 而且我不想
  • 跳出 _.each 循环

    是否可以在每个循环中跳出下划线 each obj function v i if i gt 2 break lt does not work some code here 我可以使用另一种设计模式吗 我认为你不能 所以你只需将函数的内容包装
  • Facebook 画布应用程序“redirect_uri”在授权和身份验证后突破 iframe

    我正在升级我现有的 FB 应用程序 并且非常疯狂地尝试获得一个简单的 PHP iframe 画布应用程序来授权和身份验证 以及使用 SSL 从来没有看过这么多例子 这就是我陷入困境的地方 用户授权应用程序并且应用程序对用户进行身份验证后 我