私はOAuth2ベアラートークンをPost要求とともにサーバー(Google Apps Script Execution APIを使用)に渡そうとしています。私は認可トークンを設定しようとすると、401の不正なエラーが発生し続ける。私は何とかそれを間違って設定していると確信していますが、何が間違っているのか理解できませんでした。UnityWebRequest経由で認証ヘッダーが渡されない
以下は私の現在のコードです。
private static UnityWebRequest createRequest(string functionName, List<string> parameters)
{
PostData data = new PostData();
data.Add("function", functionName);
data.Add("parameters", string.Join(",", parameters.ToArray()));
data.Add("devMode", "true"); // TODO: remove before launch
Debug.Log(data.toJsonString());
UnityWebRequest request = new UnityWebRequest(
"https://script.googleapis.com/v1/scripts/" + SERVER_SCRIPT_ID + ":run",
UnityWebRequest.kHttpVerbPOST);
UploadHandlerRaw uploadHandler = new UploadHandlerRaw(data.toJsonBytes());
request.uploadHandler = uploadHandler;
request.downloadHandler = new DownloadHandlerBuffer();
request.SetRequestHeader("Content-Type", "application/json; charset=utf-8");
request.SetRequestHeader("Authorization", "Bearer " + DriveAPI.getInstance().getAuthToken());
yield return request.Send();
Debug.Log(request.downloadHandler.text);
}
[Serializable]
private class PostData : Dictionary<string, string>
{
public byte[] toJsonBytes()
{
return Encoding.ASCII.GetBytes(toJsonString());
}
public string toJsonString()
{
string result = "{";
foreach (string key in this.Keys)
{
string value;
TryGetValue(key, out value);
result += "\"" + key + "\":\"" + value + "\",";
}
result = result.Substring(0, result.Length - 1) + "}";
return result;
}
}
実際のDataオブジェクトにヘッダーを設定しようとしましたが、そこに運がありませんでした。
残念ながら運がありません。もう少しデバッグした後で、私は実際にはこれが要求ではなく認証トークンの問題であることを発見しました(エラーメッセージはひどく誤解を招いています)。スクリプトからauthトークンを生成し、それをハードコードして要求に成功させます。ですから、私の問題は、リクエスト自体ではなく、認証コードが生成されることです。 (私は同じクラウドプロジェクトを使用しているので、まだその問題を調査しています)。 – t3jem