1

curl を使用してMarketo.com REST APIに接続しようとしています。ID サービスから応答がありません。エラーメッセージしか表示されない

「[curl] 6: ホスト 'MY_CLIENT_ENDPOINT.mktorest.com' を解決できませんでした」

、しかし、構築された URL を印刷してブラウザーのアドレス バーに貼り付けることができます。これにより、access_token 要素で期待される応答が得られます。

php と端末で curl を使用して Gmail アカウントにアクセスできるため、curl は https サービスにアクセスできます。curl url のパラメータを get リクエストとして送信し、curl の -F オプションを post リクエストとして宣言してみました

私のアプリケーションでは、github で入手できるdchesterton/marketo-rest-apiを使用していますが、アクセス トークンを取得するためだけに単純な php curl リクエストも試しました。

private function getToken() {
    $url = "$this->client_url/identity/oauth/token?grant_type=client_credentials&client_id=$this->client_id&client_secret=$this->client_secret";

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $response = curl_exec($ch);
    $errors = curl_error($ch);
    curl_close($ch);

    file_put_contents($this->logDir . 'access_token_response' . date('Y-m-d') . '.txt', $url . "\n" . $response . "\n", FILE_APPEND);
    if ($errors) {
        file_put_contents($this->logDir . 'access_token_errors' . date('Y-m-d') . '.txt', $errors . "\n", FILE_APPEND);
    }
    return $response['access_token'];
}

繰り返しますが、これは同じエラーで失敗しますが、ブラウザーに貼り付けて有効な応答を取得できる完全に形成された URL を生成します。また、言及されている他のすべてのテストと同様に、get の代わりに post を使用してこれを試しました。これらは、私のローカルホストとテスト サーバーで試しました。

なぜこれが失敗するのか、誰かが私に説明できますか? Marketo はアカウントごとに curl をブロックしますか?

4

1 に答える 1

1

似たようなものを実装しようとしていましたが、コードが機能しませんでした。何が失敗しているのか正確にはわかりませんが、コードを試してみましたが、わずかな変更を加えた後、完全に機能するようです:

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($request_data));
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
$response = curl_exec($curl);
$errors = curl_error($curl);
curl_close($curl);

これが役立つことを願っています。

于 2015-06-16T22:28:19.273 に答える