【问题标题】:OneDrive API integration with Unity 3DOneDrive API 与 Unity 3D 的集成
【发布时间】:2020-12-30 03:48:42
【问题描述】:

我想知道是否可以将 OneDrive API 直接与 Unity 3D 集成。我正在尝试使用 C# 将图像文件上传到 OneDrive 帐户,但 Microsoft 的文档没有提到如何实现这一点。

【问题讨论】:

  • 请提供代码示例以表明您已经尝试过。还要描述究竟是什么不起作用,比如抛出的错误、错误消息。除此之外,添加您使用的框架和 API 的版本。所有这些细节都将帮助我们为您提供帮助。
  • 我的应用程序的想法是拍摄用户照片并将其存储到 OneDrive 帐户中,作为研究项目的一部分。我为此目的使用 Unity3D,因为应用程序的要求之一是跨平台(Android 和 iOS)。我还使用了plugin 对于这个应用程序,我正在尝试将文件上传到 OneDrive,而无需用户登录他们的帐户。 @developer10214

标签: c# api unity3d onedrive fileshare


【解决方案1】:

一个驱动器只提供REST API,您可以与Web Requests一起使用

假设您已登录并且您有会话令牌和密钥以及来自 API 的 OneDrive URL,您可以使用 PUT 请求: PUT /drives/{drive-id}/items/{parent-id}:/{filename}:/content上传图片

void Start() {
    StartCoroutine(Upload());
}

IEnumerator Upload() {
    byte[] myData = System.Text.Encoding.UTF8.GetBytes("This is some test data");
    UnityWebRequest www = UnityWebRequest.Put("ttps://api.onedrive.com/v1.0/drives/{drive-id}/items/{parent-id}:/{filename}:/content", myData);
    //add to www object all header data with session token and content type
    yield return www.SendWebRequest();

    if(www.isNetworkError || www.isHttpError) {
        Debug.Log(www.error);
    }
    else {
        Debug.Log("Upload complete!");
    }
}

您也可以尝试社区制作的 C# 插件,例如:https://github.com/OneDrive/onedrive-sdk-csharp,但他们已经 3 年没有发布更改了,所以它现在可能不再起作用了

【讨论】:

  • 我使用 Microsoft Azure 创建了一个新应用程序,以便通过 Unity 访问 OneDrive 帐户。创建新应用程序后,我存储了应用程序 ID 以及我创建的令牌。我怎么能用 www 请求来实现呢?我还想补充一点,为了这个应用程序的目的,用户不会登录(至少在不知情的情况下),应用程序会从设备发送数据并将其存储在 OneDrive 帐户中(类似于服务器的功能)。跨度>
  • @CostinGrigore 能解决这个问题吗?如果是这样,您介意分享您的答案吗?
  • @Mad 不幸的是,在与 Microsoft 取得联系后,他们告诉我,目前没有解决此问题的方法。该技术的存在是为了做到这一点,但他们还没有记录它供公众使用。目前,他们唯一允许的是使用 Microsoft Authenticator 进程访问 Microsoft 帐户。
猜你喜欢
  • 2014-12-17
  • 2020-11-15
  • 2015-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多