そこで、ここで少し文脈を説明します。SSIS (SQL Server Integration Services) C# スクリプト タスク内から統合しているため、Google API クライアント ライブラリを使用できません。現時点では、私は解決策を急いでいます。
.net WebClient クラスを使用して、サービス アカウント用の証明書ファイルを使用して .p12 を使用して auth_token を作成することができました。したがって、必要最小限の .net コードを使用して成功した auth_token を取得するため、承認は問題ではありません。
次に行う必要があるのは、json データをエンドポイントに送信することです: https://www.googleapis.com/doubleclicksearch/v2/conversion/insert
そのため、生成した auth_code を使用し、以下の c# スニペットを使用して上記のエンド ポイントを呼び出しています。ここのヘルプ ページから取得したいくつかのテスト json を使用して記述しました。DoubleClick Search ヘルプ ページ
ページは、データを次のように送信する必要があることを示唆しています:-
POST https://www.googleapis.com/doubleclicksearch/v2/conversion
Authorization: Bearer your OAuth 2.0 access token
Content-type: application/json
{
"kind": "doubleclicksearch#conversionList",
"conversion" : [{
"clickId" : "COiYmPDTv7kCFcP0KgodOzQAAA", // Replace with a click ID from your site
"conversionId" : "test_20130906_04",
"conversionTimestamp" : "1378710000000",
"segmentationType" : "FLOODLIGHT",
"segmentationName" : "Test",
"type": "TRANSACTION",
"revenueMicros": "1000000",
"currencyCode": "USD"
}]
}
C# スニペット:-
public static HttpStatusCode SendData(string accessToken, string data, string url, out string responseData)
{
try
{
using ( var client = new WebClient { Encoding = Encoding.UTF8 })
{
client.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36";
client.Headers[HttpRequestHeader.Authorization] = string.Format("Bearer {0}", accessToken);
client.Headers[HttpRequestHeader.ContentType] = "application/json";
client.Headers[HttpRequestHeader.Accept] = "application/json";
var result = client.UploadString(url, "PUT", data);
responseData = result;
return HttpStatusCode.Created;
}
}
catch (WebException e)
{
using (var response = e.Response)
{
var httpResponse = (HttpWebResponse)response;
using (var errdata = response.GetResponseStream())
{
if (errdata != null)
{
using (var reader = new StreamReader(errdata))
{
responseData = reader.ReadToEnd();
return 0;
}
}
}
}
}
responseData = null;
return 0;
}
そして、以下のエラーが返されます。何が間違っていますか?
{
"error": {
"errors": [
{
"domain": "global",
"reason": "requestValidation",
"message": "The request was not valid. Details: [Permission denied]"
}
],
"code": 400,
"message": "The request was not valid. Details: [Permission denied]"
}
}
どんな助けでも大歓迎です。
ありがとう
アンドリュー