[筆記] C# 呼叫 Google Cloud Functions

C# 呼叫 Google Cloud Functions 

進到GCP平台後

點選"API和服務" > "憑證" > "建立憑證"

幫服務帳戶取名

點選"請選擇角色"

※注意此步驟是關鍵※ 點選"請選擇角色"後 接著找到 "Cloud Functions" 然後選擇 "Cloud Functions 叫用者"

選擇 "Cloud Functions 叫用者" 後點選"繼續"

點選"完成"

在畫面上的服務帳戶清單中點選要編輯的帳戶

點選 "新增金鑰" > "建立新的金鑰"

金鑰類型選擇"JSON"

 

取得"秘密金鑰檔案" (這個檔案要放在待會要使用的程式的根目錄)

點選 本次要使用的函式

點選"編輯"

取得 觸發網址  audience (於下方範例程式中使用)

點選"下一步" > 編輯完程式後點選"部署"

使用Google OAuth套件

using Google.Apis.Auth.OAuth2;

範例程式

string rootPath = Directory.GetCurrentDirectory();
                string jsonfileName = Path.Combine(rootPath, "[私密金鑰檔案名稱].json");
                GoogleCredential credential = GoogleCredential.FromFile(jsonfileName);
                var audience = "https://asia-east1-xxxxxxx-xxxxx.cloudfunctions.net/mytest";
                var openIdConnToken = credential.GetOidcTokenAsync(OidcTokenOptions.FromTargetAudience(audience), CancellationToken.None).Result;
                string accessToken = openIdConnToken.GetAccessTokenAsync(CancellationToken.None).Result;

                var httpClient = new HttpClient();
                httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
                HttpResponseMessage httpResponse = httpClient.GetAsync(audience).Result;
                if (httpResponse.IsSuccessStatusCode)
                {
                    string responseBody = httpResponse.Content.ReadAsStringAsync().Result;
                }