php.com中的Desk.com OAuth问题

时间:2012-05-15 19:33:28

标签: php oauth salesforce

我正在尝试使用以下代码连接到我们的CRM平台:

https://gist.github.com/2564090

但它在第28行彻底失败了:

$ oauth =新OAuth($ consumer_key,$ consumer_secret);

我是否需要做一些实例化新的OAuth对象?我应该指一些库或包含文件吗?或者我必须在我的php.ini配置文件中启用某些东西?为什么“新OAuth()”不适合我?我得到的只是:500 - 内部服务器错误。

2 个答案:

答案 0 :(得分:2)

如Paul所述,您需要安装PECL扩展http://it2.php.net/oauth

安装好扩展程序后,您可以创建一个类似我编写的连接API的方法。 如您所见,我定义了一个私有方法,该方法存储在我将其命名为Desk_Client的Client类中。 如果您需要执行多个请求,最好在类构造函数中移动oAuth对象并将其存储到实例变量中。

const API_URL = "https://YOURSITE.desk.com/api/v2/"; 

// Access token & secret (Click [Your Access Token] on App Listing) 
// https://[yoursite].desk.com/admin/settings/api-applications)
const ACCESS_TOKEN = "*****";
const ACCESS_SECRET = "*****";

// Application key and secret found here: 
// https://[yoursite].desk.com/admin/settings/api-applications
const CONSUMER_KEY = "*****";
const CONSUMER_SECRET = "*****";

/**
 * Utility method to perform a request to the Desk.com API.
 *
 * @param string $actionPath - The relative path to an API action (e.g. companies)
 * @param array $params - Array containing key value parameters for the request
 * @param string $request - POST, GET, PUT, PATCH
 * @return Array
 */
private function _performRequest($actionPath, $params = null, $request = OAUTH_HTTP_METHOD_GET) {

    $url = self::API_URL.$actionPath;

    try {
        $oauth = new OAuth(CONSUMER_KEY, CONSUMER_SECRET);
        $oauth->setToken(ACCESS_TOKEN, ACCESS_SECRET);
        $oauth->disableSSLChecks();

        switch ($request) {
            case OAUTH_HTTP_METHOD_GET:
                // Add get params to the url.
                $url .= ($params && $request === "GET") ? "?".http_build_query($params) : "";
                $oauth->fetch($url);
                break;

            case OAUTH_HTTP_METHOD_POST:
                $oauth->fetch($url, json_encode($params), OAUTH_HTTP_METHOD_POST);
                break;

            default:
                $oauth->fetch($url, json_encode($params), OAUTH_HTTP_METHOD_PUT);
        }
        $result = $oauth->getLastResponse();
    }
    catch(Exception $e) {
        error_log("Error: ".$e->getCode()." - ".$e->getMessage());
    }

    return json_decode($result);
}

我共享此代码,因为desk.com Api文档只提供了一个示例Ruby代码段,我希望此代码可以节省一些时间

答案 1 :(得分:0)

您需要从pecl安装OAuth,例如