c# - 授权 header 未通过 UnityWebRequest 传递

标签 c# unity-game-engine

我正在尝试将 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/

相关文章:

c# - 堆栈的目的是什么?为什么我们需要它?

android - Unity 中的 UI 切换

unity-game-engine - 什么是根运动及其工作原理?

android - 为 android unity 构建时出现这些奇怪的 xcode/iOS 错误

android - unity添加sdk报 `no resources found`错误

c# - 从嵌套的 ToolStripMenuItem 检索时,ContextMenuStrip.Owner 属性为 null

c# - Xamarin - 将 ESRI MapView 动态添加到 FrameLayout

c# - 正则表达式C#-匹配任何YouTube.com URI

c# - Winforms 事件架构

c# - ScriptableObject 的 OnEnable 函数未被调用