微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JsonSerializationException'无法找到构造函数'为GoogleApi

如何解决JsonSerializationException'无法找到构造函数'为GoogleApi

我目前正在使用Unity构建iOS应用。

我一直在使用dll插件Google.Apis.Auth,Google.Apis.Core,Google.Apis.Sheets.v4,Newtonsoft.Json,以便在应用程序启动时从Google工作表中读取数据。 我已经在Windows和iOS上完成了构建。 Windows One完美运行,当应用程序打开时,它将自动打开Chrome,并要求登录以访问Google工作表。然后您返回该应用程序,它将加载数据。

但是,对于iOS版本,我遇到了一个问题。每当我在XCode中构建并运行iOS构建并将其运行到iPhone时,都会出现错误

JsonSerializationException Unable to find a constructor for type Google.Apis.Auth.Oauth2.GoogleClientSecret 
A class should either have a default constructor,one constructor with arguments or a constructor marked with the JsonConstructor attribute.

到目前为止我已经尝试过:

  • 在GoogleClientSecret类的构造函数上方添加 [JsonConstructor]
  • 创建一个link.xml文件
  • 将凭据.json文件放入流媒体资源中。
  • 使用google-api-dotnet-client的源代码

如果有任何代码示例或其他信息有帮助,我非常乐意提供。对于解决此问题的任何提示将不胜感激。

以下是用于阅读Google工作表的代码

using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Services;
using Google.Apis.Sheets.v4;
using Google.Apis.Sheets.v4.Data;
using Google.Apis.Util.Store;
using UnityEngine;
using Object = System.Object;

namespace GoogleSheetsLevelSynchronizer
{
    static class GoogleSheetReader
    {
        // If modifying these scopes,delete your prevIoUsly saved credentials
        // at ~/.credentials/sheets.googleapis.com-dotnet-quickstart.json
        static string[] Scopes = { SheetsService.Scope.SpreadsheetsReadonly };
        static string ApplicationName = "google-sheets-api-Quickstart";

        public static IList<IList<object>> Reader(String spreadsheetId,String range)
        {
            UserCredential credential;

            using (var stream =
                new FileStream(Application.streamingAssetsPath + "/credentials.json",FileMode.Open,FileAccess.Read))
            {
                // The file token.json stores the user's access and refresh tokens,and is created
                // automatically when the authorization flow completes for the first time.
                string credpath = "token.json";
                credential = GoogleWebAuthorizationbroker.AuthorizeAsync(GoogleClientSecrets.Load(stream).Secrets,Scopes,"user",CancellationToken.None,new FileDataStore(credpath,true)).Result;
                Debug.Log("Credential file saved to: " + credpath);
            }

            // Create Google Sheets API service.
            var service = new SheetsService(new BaseClientService.Initializer()
            {
                HttpClientinitializer = credential,ApplicationName = ApplicationName,});

            // Define request parameters.
            
            SpreadsheetsResource.ValuesResource.GetRequest request =
                    service.Spreadsheets.Values.Get(spreadsheetId,range);

            // Prints the names and majors of students in a sample spreadsheet:
            // https://docs.google.com/spreadsheets/d/[spreadsheetId]/edit
            ValueRange response = request.Execute();
            IList<IList<object>> values = response.Values;
            
            if (values != null && values.Count > 0)
            {
                Debug.Log("Data Found!! :)");
            }
            else
            {
                Debug.LogError("No data found.");
            }
            // Console.Read();

            return values;
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。