Gotomeeting php api (oauth) реализация - PullRequest
1 голос
/ 26 декабря 2011

Я пытаюсь создать реализацию php gotomeating api.Я успешно получил access_token, но для любых других запросов я получаю ответы об ошибках.Это мой код:

<?php 
session_start();

$key = '#';
$secret = '#';

$domain = $_SERVER['HTTP_HOST'];
$base = "/oauth/index.php";
$base_url = urlencode("http://$domain$base");

$OAuth_url = "https://api.citrixonline.com/oauth/authorize?client_id=$key&redirect_uri=$base_url";
$OAuth_exchange_keys_url = "http://api.citrixonline.com/oauth/access_token?grant_type=authorization_code&code={responseKey}&client_id=$key";

if($_SESSION['access_token']) CreateForm();else
if($_GET['send']) OAuth_Authentication($OAuth_url);
elseif($_GET['code']) OAuth_Exchanging_Response_Key($_GET['code'],$OAuth_exchange_keys_url);

function OAuth_Authentication ($url){
    $_SESSION['access_token'] = false;
    header("Location: $url");
}

function CreateForm(){
    $data = getURL('https://api.citrixonline.com/G2M/rest/meetings?oauth_token='.$_SESSION['access_token'],false);
}

function OAuth_Exchanging_Response_Key($code,$url){
    if($_SESSION['access_token']){
        CreateForm();
        return true;
    }
    $data = getURL(str_replace('{responseKey}',$code,$url));

    if(IsJsonString($data)){
        $data = json_decode($data);
        $_SESSION['access_token'] = $data->access_token;
        CreateForm();
    }else{
        echo 'error';
    }
}

/*
 * Helper functions
 */

/*
 * checks if a string is json
 */
function IsJsonString($str){
    try{
        $jObject = json_decode($str);
    }catch(Exception $e){
        return false;
    }
    return (is_object($jObject)) ? true : false;
}
/*
 * CURL function to get url
 */
function getURL($url,$auth_token = false,$data=false){

    // Initialize session and set URL.
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);

    // Set so curl_exec returns the result instead of outputting it.
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

    if($auth_token){
        curl_setopt($curl, CURLOPT_HTTPHEADER, array('Authorization: OAuth oauth_token='.$auth_token));
    }

    if($data){
        curl_setopt($ch, CURLOPT_POST,true);
        $d = json_encode('{ "subject":"test", "starttime":"2011-12-01T09:00:00Z", "endtime":"2011-12-01T10:00:00Z", "passwordrequired":false, "conferencecallinfo":"test", "timezonekey":"", "meetingtype":"Scheduled" }');

        echo implode('&', array_map('urlify',array_keys($data),$data));
            echo ';';
        curl_setopt($ch, CURLOPT_POSTFIELDS, 
            implode('&', array_map('urlify',array_keys($data),$data))
        );

    }

    // Get the response and close the channel.
    $response = curl_exec($ch);

    /*
     * if redirect, redirect
     */
    $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
                        if ($code == 301 || $code == 302) { 
                            preg_match('/<a href="(.*?)">/', $response, $matches); 
                            $newurl = str_replace('&amp;','&',trim(array_pop($matches))); 
                   $response = getURL($newurl);
                        } else { 
                            $code = 0; 
                        }

    curl_close($ch);

    return $response;
}

function urlify($key, $val) {
  return urlencode($key).'='.urlencode($val);
}

, чтобы запустить процесс подключения, вам нужно сделать запрос в php-файл, отправив = 1.Я пробовал разные попытки получить список собраний, но не смог получить хороший ответ.

Кто-нибудь имел проблемы с этим ранее или знал решение для этого?

Редактировать:

Это не ошибка скручивания, сервер отвечает сообщениями об ошибках, на форумах от Citrix говорят, что это должно работать, никаких подробностей о том, почему это не работает, если у меня проблема с тем, как я реализовалoauth или код запроса.Наиболее распространенная ошибка, которую я получаю: «error code:31305», что не задокументировано на форуме.

1 Ответ

1 голос
/ 31 декабря 2011

[Я также разместил это на Citrix Developer Forums , но для полноты упомяну и здесь.]

Мы все еще дорабатываем документацию для этих интерфейсов и некоторые параметры, которыенаписаны как необязательные, фактически требуются.

По сравнению с приведенным выше примером необходимы следующие изменения:

  • установить временную зону как 67 (тихоокеанское время)
  • установить пароль требуетсяfalse
  • установить для conferencecallinfo значение Hybrid (то есть будут предоставлены как PSTN, так и VOIP)

С учетом этих изменений ваши примерные данные будут выглядеть примерно так:

{"subject":"test meeting", "starttime":"2012-02-01T08:00:00",
 "endtime":"2012-02-01T09:00:00", "timezonekey":"67", 
"meetingtype":"Scheduled", "passwordrequired":"false", 
"conferencecallinfo":"Hybrid"}

Вы также можете проверить работающее приложение-образец PHP, которое я создал: http://pastebin.com/zE77qzAz

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...