google 已經提供非常多與機器學習相關的API
比如說Vision API等等
而在使用的時候,需要註冊一個GCP的帳號(也就是google 帳戶 開通GCP)
建立API 授權後,就可以開始對API進行呼叫
而本例將是利用.net framework C#的版本
進行授權驗証後,方使用Vision API
這邊在建立驗証權限的時候,讀Google 提供的key.Json檔案時
發生了Json解析問題「Error deserializing json credential data」
在此做一個記錄
Sample Code:
//取得憑証
public GoogleCredential CreateCredential()
{
using (var stream = new FileStream(JsonKeypath, FileMode.Open, FileAccess.Read))
{
string[] scopes = { VisionService.Scope.CloudPlatform };
var credential = GoogleCredential.FromStream(stream);
credential = credential.CreateScoped(scopes);
return credential;
}
}
上面這一段是要取得憑証檔,以驗証程式的身份是合法的Sample Code
而在執行下面這一段的時候
var credential = GoogleCredential.FromStream(stream);
會出現「Error deserializing json credential data」的問題
而經查問題都是指向了「Newtonsoft.Json」這個dll
通常在經過更新這個dll就會解決
但因為手邊的dll版本就是11.0.0.0
在不更新dll的情況之下
就要在app.config 中將元件的相依性做版本的指定
<runtime>
<!--直接標示要對應的版本內容-->
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
筆者猜這樣的設定是要讓Google.Api元件在執行Newtonsoft.Json就能對應到程式中所附的dll之版本
以不造成無法判讀Json的問題