如何通过 PHP 调用 CITRIX (LogMeIn) API 来注册新的 GotoWebinar 与会者?

2024-04-09

我使用以下代码将用户注册到网络研讨会:

   $headers = array(
 'HTTP/1.1',
  'Accept: application/json',
  'Accept: application/vnd.citrix.g2wapi-v1.1+json',
  'Content-Type: application/json',
  'Authorization: OAuth oauth_token='.$access_token,
  'Name_First:test',
  'Name_Last:ank',
  'Email:[email protected] /cdn-cgi/l/email-protection',
   );

 $gtw_url = "https://api.citrixonline.com/G2W/rest/organizers/{organizerkey}/webinars/{webinarkey}/registrants";
 $curl = @curl_init();
 @curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); 
     @curl_setopt($curl, CURLOPT_URL, $gtw_url);
      @curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
     @curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
     @curl_exec($curl);
     @curl_close($curl);

我已经通过了网络研讨会密钥和组织者密钥。我应该得到如下输出:

HTTP/1.1 201 OK Content-Type: application/json
{
    "registrantKey":5678,
    "joinUrl":"https://www1.gotomeeting.com/join/123456789/5678"
}

问题是当我运行文件时我得到输出

[
    {
        "registrantKey":106660361,
        "firstName":"test",
        "lastName":"1",
        "email":"[email protected] /cdn-cgi/l/email-protection",
        "status":"WAITING",
        "registrationDate":"2012-06-29T21:07:10Z",
        "joinUrl":"https://www1.gotomeeting.com/join/141654337/106660361",
        "timeZone":"America/Denver"
    }
]

我正在使用创建网络研讨会 URL,那么为什么我会获取已注册用户的信息?


这个问题已有 3 年历史了,但考虑到 CITRIX(现在的 LogMeIn)API 文档目前的惨淡状态,我提供以下代码片段作为可能的解决方案:

显然,我们需要我们帐户的组织者密钥和访问令牌数据......

    $organizer_key= '10000000000XXXXXXX';
    $access_token = 'GwsiiPWaJbHIiaIiocxxxxxxxxxx';

获取网络研讨会所需的最少字段(例如从 HTML 表单)并对数据进行 JSON 编码...

    $newRegFields = (object) array(
        'firstName' => $_POST[ 'FirstName' ],
        'lastName'  => $_POST[ 'LastName'  ],
        'email'     => $_POST[ 'Email'     ],
    );

    $newRegistrantFields = json_encode( $newRegFields );

    //echo '<br><br>' . $newRegistrantFields;

参加网络研讨会...

    $webinarID = preg_replace( "/[^0-9]/", "", $_POST[ "WebinarKey" ] );

将 URL 设置为 LogMeIn API(重发确认选项不是必需的)...

    $gtw_url = "https://api.citrixonline.com/G2W/rest/organizers/" . $organizer_key . "/webinars/" . $webinarID . "/registrants?resendConfirmation=false";

格式化我们的 POST 标头...

    $headers = array(
        "HTTP/1.1",
        "Accept: application/json",
        "Content-Type: application/json",
        "Authorization: OAuth oauth_token=$access_token",
        "Content-Length: " . strlen( $newRegistrantFields )
    );

设置我们的 cURL 选项,确保我们指定一个 POST卷曲_POST, 1 ...

    $curl = curl_init();

    curl_setopt( $curl, CURLOPT_URL, $gtw_url                       );
    curl_setopt( $curl, CURLOPT_HTTPHEADER, $headers                );
    curl_setopt( $curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0 );
    curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, 0                   );
    curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1                   );
    curl_setopt( $curl, CURLOPT_POST, 1                             );
    curl_setopt( $curl, CURLOPT_POSTFIELDS, $newRegistrantFields    );

    $newRegistrants = curl_exec( $curl );
    curl_close( $curl );

我们的 cURL 调用已返回 JSON 编码数据,无论是服务器错误消息还是注册确认。现在让我们将回复转换成一个方便的关联数组......

    $newRegistrantsArray = json_decode( $newRegistrants, true );

    //echo '<br><br>' . $newRegistrants . '<br><br>';
    //echo '<pre>'; print_r( $newRegistrantsArray ); echo '</pre>';

If the 错误代码钥匙被退回,然后注册被轰炸了。我在这里所做的就是从服务器获取实际的错误描述并将其加载以返回到我的调用 HTML 页面,但这完全是可选的...

    if( array_key_exists( 'errorCode', $newRegistrantsArray )) {
        $form_data[ 'status' ] = false;
        $form_data[ 'code'   ] = $newRegistrantsArray[ 'description' ];
        $form_data[ 'error'  ] = 'E200';
        //echo json_encode( $form_data );
        //exit;
    }

现在,如果注册成功,服务器将返回类似...

(
  [registrantKey] => 2.5022062212198E+18
  [joinUrl] => https://global.gotowebinar.com/join/6552167171182613761/103193261
) 

...所以我只是检查这些钥匙是否已归还,如果是,我知道注册良好。

    if( array_key_exists( 'registrantKey', $newRegistrantsArray ) && array_key_exists( 'joinUrl', $newRegistrantsArray ) ) {
        $form_data[ 'status' ] = true;
        $form_data[ 'code'   ] = $_POST[ 'Email' ] . ' successfully registered with webinar';
        $form_data[ 'error'  ] = 'E300';
        //echo json_encode( $form_data );
        //exit;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过 PHP 调用 CITRIX (LogMeIn) API 来注册新的 GotoWebinar 与会者? 的相关文章

  • 如何编写在正文中包含锚标记的 Zend Framework URL?

    使用 Zend Framework 中设置的标准 MVC 我希望能够显示始终具有锚点的页面 现在我只是在 phtml 文件中添加一个带有 anchor 的无意义参数
  • PHP中如何识别服务器IP地址

    PHP中如何识别服务器IP地址 对于服务器 ip 来说是这样的 SERVER SERVER ADDR 这是港口的 SERVER SERVER PORT
  • 通过JS Laravel访问存储目录

    有没有办法访问storage目录 该目录已经链接到publicJS 中的目录 我正在尝试制作一个上传图片的表单 验证脚本 if request gt hasFile photos marker gt photos request gt ph
  • 如何在没有引用的情况下复制对象?

    PHP5 OOP 有据可查对象通过引用传递 http php net manual en language oop5 references php默认情况下 如果这是默认的 在我看来 有一种非默认的方式可以在没有参考的情况下进行复制 如何
  • 如何在php中使用preg添加html属性

    我正在寻找在 php 中编写一个脚本来扫描 html 文档并根据它找到的内容向元素添加新标记 更具体地说 我是扫描文档并为每个元素搜索CSS标记 float right left 如果找到它 它会添加align right left 基于它
  • php下拉菜单人口

    我正在尝试编写一个 php 脚本 该脚本将根据主下拉菜单的选择填充第二个下拉菜单 我想使用 jquery 来完成所有非页面刷新的事情 但我发现现有的所有东西都很难理解和修改 你知道有什么写得很好且易于理解的东西吗 或者可能是现有的教程 下面
  • 为什么 PHP 中不允许“传统”类型提示?

    刚刚发现类型提示 http php net manual en language oop5 typehinting phpPHP 中允许 但不适用于整数 字符串 布尔值或浮点数 为什么 PHP 不允许对整数 字符串等类型进行类型提示 从 P
  • 如何使用 Google 帐户对我们网站中的用户进行身份验证

    如何在我们的网站中使用 Google 帐户对用户进行身份验证 我希望用户重定向到谷歌登录页面 然后将他重定向到我的网站 我想要这个 PHP 实现 你要OAuth http code google com apis accounts docs
  • 文件修改时间检查的成本

    对于Linux下包含少量字节的文件 我只需要处理自上次处理以来发生更改的时间 我通过调用 PHP 检查文件是否被更改clearstatcache filemtime 定期 由于整个文件总是很小 因此删除对 filemtime 的调用并通过将
  • 来自本地 XML 的模拟 SoapClient 响应

    我想用文件中的 XML 来模拟 SoapClient 的响应 我如何创建一个 stdClass 对象 就像 SoapClient 从文件返回一样 客户端已经包装了 SoapClient 因此可以轻松模拟响应 我的模拟是这样的 soapCli
  • Laravel 5.4 升级 - 违反完整性约束 - 列不能为空

    奇怪的是 所有这些都在 5 2 中工作 但我不知道可以改变什么来实现这一点 下面是错误和正在插入的数组 SQLSTATE 23000 Integrity constraint violation 1048 Column gender can
  • 将数据库中的用户 ID 添加到 Codeigniter 中的会话数据中?

    我是 CodeIgniter 的新手 在从数据库添加用户 ID 用户登录后 到会话数据时遇到问题 这是我的代码问题 之前可能会在 SOF 上被问到 在付出了所有努力之后 我问这个 登录模型
  • PHP 基本身份验证 file_get_contents() [重复]

    这个问题在这里已经有答案了 我需要从网站解析一些 XML 数据 XML 数据是原始格式 但在我需要进行身份验证之前 基于基本网络服务器的身份验证 使用用户名和密码 I tried homepage file get contents htt
  • 在 null laravel 上调用成员函数 save()

    大家好 我正在使用 laravel 5 多态关系将数据保存在数据库中 但我遇到了一些问题 当我尝试将数据保存在数据库中时 它会抛出此错误 对 null 调用成员函数 save 我不知道为什么我会遇到这个错误 我正在关注多态关系的本教程在 L
  • 具有更改用户代理上下文的 file_get_contents 不起作用

    我正在尝试获取页面的阅读数和点赞数 网址是 https mp weixin qq com s NPavBeHc8VdWXeSL6kfLRg https mp weixin qq com s NPavBeHc8VdWXeSL6kfLRg 您必
  • 显式删除会话cookie会产生什么影响?

    我使用 php session 来维护用户的会话 Session 在登录后创建 在注销或超时后销毁 我需要管理面板中的一个选项来强制注销任何用户 如果他在网站上处于活动状态 我怎样才能做到这一点 我正在考虑删除临时会话文件 这应该有效地破坏
  • Doctrine DQL 从 join 返回平面数组

    我通过 DQL 中的常规 LEFT JOIN 选择 3 个实体 它们通过连接表关联 连接表还定义了实体以及带注释的关系 查询执行没有问题 但我的结果作为平面数组返回 我期望一个包含三个实体作为每个索引的数组元素的数组 SELECT e1 e
  • PDO语法错误

    我在一个项目中使用 PDO 但提交时出现语法错误 这是我的代码
  • 使用“INSERT ... ON DUPLICATE KEY UPDATE”插入多条记录

    我的表结构 table marks 我的目标 我想用条件插入或更新多条记录 我目前正在通过此查询进行检查 第一步 SELECT FROM marks WHERE student 115 AND param 1 第二步 if records
  • 使用 libcurl 检查 SFTP 站点上是否存在文件

    我使用 C 和 libcurl 进行 SFTP FTPS 传输 在上传文件之前 我需要检查文件是否存在而不实际下载它 如果该文件不存在 我会遇到以下问题 set up curlhandle for the public private ke

随机推荐

  • 发现循环依赖问题

    我正在设计一个系统 其中有两个模块 一个用于管理文件 另一个用于用户 对于某些逻辑运算 它们需要彼此提供的服务 每个模块都由一个单例表示 该单例实现一个相互提供一些服务的接口 并通过抽象工厂来提供它们 如下所示 public class U
  • 如何使 Pinia 商店热重载更改?

    import defineStore acceptHMRUpdate from pinia import v4 as uuidv4 from uuid export const useStoreNotes defineStore store
  • 解耦与 YAGNI

    他们矛盾吗 解耦是一件伟大但很难实现的事情 然而 在大多数应用程序中 我们并不真正需要它 所以我可以设计高度耦合的应用程序 它几乎不会改变任何明显的副作用 例如 你不能分离组件 单元测试是痛苦的 屁股 等 你怎么认为 您是否总是尝试解耦并处
  • 在python中添加小时到unix时间戳

    我需要在某个 UNIX 时间戳上添加 5 小时 就像游戏的开始和停止时间一样 所以我知道比赛的开始时间和持续时间 我需要设置结束时间 这如何在 python 中完成 UNIX 时间戳以秒为单位 end timestamp start tim
  • Gradle 额外属性在子项目中定义的自定义任务中不可见

    我正在尝试在多个 Gradle 任务之间重用通用逻辑 类似于中建议的内容这个答案 https stackoverflow com a 13072481 但我遇到了额外项目属性不可见的问题 归根结底 问题就在这里 假设我有一个根 Gradle
  • 如何在haskell中反转整数?

    我需要有关如何逆转的帮助Integer在 Haskell 中具有以下类型签名 reverseInt Integer gt Integer reverseInt a undefined help here 我需要Integer输入要反转的数字
  • 具有多个条目的 Rails 嵌套形式

    我有一个Sezzion model attr accessible description has many session instructors dependent gt destroy has many instructors thr
  • Apache 和 PHP 的默认 Windows 用户

    查看 Windows XP 上运行的进程 发现 Apache httpd exe 在 SYSTEM 用户下运行 但我不知道什么 User 用于运行 PHP 脚本 这是使用 Xampp 的基本安装 我试图在目录上设置正确的权限 即 Modif
  • 附加 mdf 文件时 SQL Server 版本错误

    标题 Microsoft SQL Server Management Studio 服务器 DESKTOP MR6JCUA 附加数据库失败 微软 SqlServer Smo 附加信息 执行 Transact SQL 语句或批处理时发生异常
  • 如何在 Interface Builder 中创建许多溢出到 xib 之外的元素

    我有一个 UIView 其中有很多元素 如文本字段 日期选择器和选择器视图 可以将数据添加到我的应用程序 这不会出现在 Interface Builder 的屏幕中 在我看来 用户将向下滚动以插入它们 有办法实现这一点吗 Thanks 如何
  • 融合乘加和默认舍入模式

    使用 GCC 5 3 可以编译以下代码 O3 fma float mul add float a float b float c return a b c 产生以下程序集 vfmadd132ss xmm1 xmm2 xmm0 ret 我注意
  • 输出发送到浏览器后设置 cookie

    有没有办法可以在 html 输出后设置 cookie 根据 PHP 手册 setcookie 应该设置before输出 我的投票系统需要它 其中在成功的 Mysql 查询后将设置一个 cookie 我把它放在一个文件中 您可以使用输出缓冲区
  • Android Studio 无法识别 Samsung Galaxy 手机

    我的三星手机在 Windows 7 上无法被 Android Studio 识别 我通过在此处安装 Samung 驱动程序来修复它 http developer samsung com technical doc view do v T00
  • Firebase JWT:签名验证失败

    我尝试在 Firebase 中使用 JWT 身份验证 但总是收到此错误 致命错误 未捕获的 Firebase JWT SignatureInvalidException 签名验证失败 代码是这样的 key test tokenId base
  • spring-data-elasticsearch 在多个索引上搜索

    我的页面上有一个搜索字段 该搜索字段应该搜索多个索引 我可以毫无问题地搜索一个索引 如 spring data elasticsearch 文档中所述 但是 如果我搜索 例如 Foo 我希望得到以下列表作为按相关性排序的结果 title F
  • 滚动条通过 CSS 动画/过渡出现

    我正在用 Angular 来动画我的 ng view三次贝塞尔曲线过渡 Animations slide animation ng enter slide animation ng leave webkit transition all c
  • 双指针与引用指针传递[重复]

    这个问题在这里已经有答案了 在理解双指针概念以及应该在哪里使用它的同时 我有一个疑问 我试验了这段代码 发现我也可以使用按引用传递指针而不是双指针 include
  • MySQL:使用 PREPARE 命令命名参数?

    MySQL 中是否可以使用PREPARE命令与命名参数例如PDO in PHP 这是我的例子 SET s SELECT FROM MY TABLE WHERE my column 1 AND my column 2 PREPARE stmt
  • 如何删除 Google Play 排行榜高分

    我刚刚发布了我的游戏 我看到测试的高分仍然作为高分出现 如何删除它 重置排行榜 在游戏中加载排行榜或成就 在右上角单击设置 共享 断开连接 带有复选框 同时删除谷歌中的所有活动 它将删除您的所有分数
  • 如何通过 PHP 调用 CITRIX (LogMeIn) API 来注册新的 GotoWebinar 与会者?

    我使用以下代码将用户注册到网络研讨会 headers array HTTP 1 1 Accept application json Accept application vnd citrix g2wapi v1 1 json Content