我试图将OAuth2载体令牌和Post请求一起传递给我的服务器(使用Google Apps脚本执行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;
}
}
我已经尝试在实际的数据对象中设置标题,但没有运气那里要么。
不幸的是没有运气。经过一些更多的调试后,我发现这是auth令牌本身而不是请求的问题(错误消息非常具有误导性)。从我的脚本生成验证令牌并将其硬编码到请求中会导致请求成功。所以我的问题是生成验证码而不是请求本身。 (我确实确保我使用的是同一个云计划,所以我仍在调查此问题)。 – t3jem