1

このコードを使用してCRMプラットフォームに接続しようとしています。

https://gist.github.com/2564090

しかし、28行目で完全に失敗しています。

$ oauth = new OAuth($ Consumer_key、$ Consumer_secret);

新しいOAuthオブジェクトをインスタンス化するために必要なことはありますか?いくつかのライブラリまたはインクルードファイルを参照することになっていますか?または、php.ini構成ファイルで何かを有効にする必要がありますか?'新しいOAuth()'が機能しないのはなぜですか?私が今までに得たのは:500-内部サーバーエラーです。

4

2 に答える 2

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 スニペットのみを提供しているためです。このコードが誰かの時間を節約できることを願っています。

于 2014-05-08T10:28:26.917 に答える
0

たとえば、pecl から OAuth をインストールする必要があります。

于 2012-12-10T17:14:39.713 に答える