📜  如何从 onedrive unity 下载东西 - C# (1)

📅  最后修改于: 2023-12-03 14:51:45.900000             🧑  作者: Mango

如何从 OneDrive Unity 下载东西 - C#

在 Unity 中下载 OneDrive 上的文件可以让我们在开发过程中更有效地管理资料。在这里,我们将介绍在 Unity 中如何使用 C# 从 OneDrive 下载文件。

1. 安装请求库

我们需要在 Unity 中安装一个用于进行 HTTP 请求的库。在这里,我们将使用 UnityWebRequest。这是 Unity 内置的一个插件,可以用来进行 HTTP 请求和下载。

2. 注册 Azure 应用

如果您尚未注册 Azure 应用程序,请遵循下列步骤:

  1. 转到 Azure 门户。

  2. 单击“Azure Active Directory”>“应用注册”>“新注册”。

  3. 现在,添加以下详细信息:

    • 名称 - 输入您的应用程序名称。
    • 支持的帐户类型 - 选择“任何组织目录中的帐户和个人 Microsoft 帐户(例如 Outlook.com、Live.com)”这个选项。
    • 重定向 URI - 选择“Web”并在文本框中键入http://localhost。此重定向 URI 在创建应用程序时是必需的,但在开发期间不需要更改。

    在完成这些详细信息的填写后,请单击“注册”按钮。此时,您将被重定向到您的应用程序细节页。

  4. 现在,复制“应用程序(客户端)ID”并将其保存在一个安全的地方。我们稍后将在代码中使用它。

3. 授权控制

接下来,我们将授权控制设置为访问 OneDrive 文件。遵循下列步骤进行操作:

  1. 单击“配置”>“管理授权”。

    image-20211011112522867

  2. 在“授权类型”下拉列表中,选择“账户类型+所有 Microsoft Graph 权限”。

    image-20211011112601669

  3. 在“API 权限”下,添加 Microsoft Graph。单击“添加权限”>“Microsoft Graph”>“Delegated permissions”>“Files.Read.All”。

    image-20211011112653428

    现在,我们已经授权了 OneDrive 上的文件。

4. 下载文件

我们在 Unity 中打开新场景并在空场景中创建一个 GameObject。此时,为 GameObject 添加脚本并以以下方式编写它。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;

public class DownloadFile : MonoBehaviour
{
    void Start()
    {
        StartCoroutine(DownloadFromOneDrive());
    }

    IEnumerator DownloadFromOneDrive()
    {
        string url = "https://graph.microsoft.com/v1.0/drive/items/{item-id}/content"; // 此处的 {item-id} 是从 OneDrive 文件 URL 中获取的
        UnityWebRequest request = UnityWebRequest.Get(url);

        request.SetRequestHeader("Authorization", "Bearer " + "[ACCESS TOKEN]"); // 此处的 [ACCESS TOKEN] 是从 Azure 应用中获取的

        yield return request.SendWebRequest();

        if (request.result == UnityWebRequest.Result.ConnectionError || request.result == UnityWebRequest.Result.ProtocolError)
        {
            Debug.LogError(request.error);
            yield break;
        }

        byte[] bytes = request.downloadHandler.data;
        System.IO.File.WriteAllBytes(Application.dataPath + "/downloadedFile", bytes); // 此处为要下载的文件名及其位置
    }
}

在此代码中,我们首先进行了请求,用的是 OneDrive 文件 URL,其中“item-id”是文件的唯一标识符。接下来,我们设置请求标头以使用 Azure 应用程序的访问令牌进行授权。最后,我们将下载的字节数组写入目标文件。在此代码中,我们在场景中创建了一个 GameObject 并将此脚本添加到其中。

现在,我们已经为 Unity 中的 OneDrive 下载准备好了所有内容。

5. 结论

在本指南中,我们介绍了如何使用 C# 和 UnityWebRequest 在 Unity 中从 OneDrive 上下载文件。

我们首先安装了必要的请求库,并注册了 Azure 应用程序。接下来,我们授权了该应用程序对 OneDrive 上的文件进行访问。最后,我们添加了 C# 脚本以实现文件下载。