我正在尝试将 OAuth2 不记名 token 与 Post 请求一起传递到我的服务器(使用 Google Apps 脚本执行 API)。无论我尝试设置授权 token ,我都会收到 401 未经授权的错误。我确信我设置错误,但我一直无法找出问题所在。
下面是我当前的代码。
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;
}
}
我尝试在实际的数据对象中设置 header ,但也没有运气。
最佳答案
事实证明我的代码运行良好。
来自 Apps 脚本的错误消息具有误导性,因为正在发送身份验证 token 。我能够通过从我的脚本(为执行 API 端点提供服务)生成身份验证 token 并在我的应用程序中对该 token 进行硬编码来测试正确性。这样做导致请求成功。
我已检查脚本中使用的云项目和我的应用程序是否相同,但仍然收到错误,但这是另一个问题的问题:)。
关于c# - 授权 header 未通过 UnityWebRequest 传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46229739/