###症状
UnityでAndroidビルドしたゲームから難易度設定のパラーメーターを書いたシートの値を読み取りたいのですが、実機上だと謎のエラーが出て読み取れません。
コードは一部抜粋していますが、関係ある部分は以下の通りです。
OpenSheetをAwakeで呼んで認証だったりを始めています。
C#
1 /// <summary> 2 /// シートを開く(認証などもする) 3 /// </summary> 4 public void OpenSheet() 5 { 6#if UNITY_EDITOR 7 StartAPI("client_secret.json"); 8#elif UNITY_ANDROID 9 AndroidStreamingAssets("client_secret.json"); 10#endif 11 } 12 13 14#if !UNITY_EDITOR && UNITY_ANDROID 15 ///<summary> 16 ///Android用StreamingAssets読み込み関数 17 /// </summary> 18 private void AndroidStreamingAssets(string fileName) 19 { 20 var path = Application.streamingAssetsPath + "/" + fileName; 21 22 var request = UnityWebRequest.Get(path); 23 request.SendWebRequest().completed += (AsyncOperation operation) => StartAPI(request); 24 } 25 26 /// <summary> 27 /// Android用 28 /// </summary> 29 /// <param name="request"></param> 30 private void StartAPI(UnityWebRequest request) 31 { 32 ICredential credential = null; 33 34 credential = GoogleCredential.FromJson(request.downloadHandler.text).CreateScoped(new[] { SheetsService.Scope.Spreadsheets }).UnderlyingCredential; 35 36 SetServices(credential); 37 } 38#endif 39 40 private void SetServices(IConfigurableHttpClientInitializer credential) 41 { 42 // Create Google Sheets API service. 43 service = new SheetsService(new BaseClientService.Initializer() 44 { 45 HttpClientInitializer = credential, 46 ApplicationName = applicationName, 47 }); 48 49 sheetRoadComplete.Invoke(); 50 }
エラー文は以下の通りです。
C#
1JsonSerializationException: Unable to find a constructor to use for type 2Google.Apis.Auth.OAuth2.JsonCredentialPrameters. A class should either have a default constructor. one constructor with arguments or a constructor marked with the JsonConstructor attribute. Path 'type', line 2 position 9.
###試したこと
このエラーはどうやら「Google.Apis.Auth.OAuth2.JsonCredentialPrameters」にコンストラクタがないと言われているようだったのでGoogle APIをデコンパイルしてこのクラスにコンストラクタを追加したオリジナルクラスを作成し、内部の関数を引っ張ってきてJsonファイルをデシリアライズするなどやってみたのですが、PCではうまくいくけれどAndroidでは謎の現象が起きてうまくいきませんでした。。。
回答1件
あなたの回答
tips
プレビュー