前置作業
1. 先申請、啟用 G Suite 並設定好DNS相對應的參數。
2. 能以管理者身份進入https://admin.google.com/ 來管理。
至 Google APIs 進行註冊(表明要以程式來進行存取控制),並且取得憑證
1. 連線到 https://console.developers.google.com/flows/enableapi?apiid=admin 進行註冊
p.s. 登入具有 G Suite管理權限的帳號
2. 建立api 專案 (如果有專案 就選已有的專案) 啟用 API (Admin SDK)
3. 請先點選"取消"
4.OAuth 同意畫面 設定
5.建立憑證
6. 下載JSON (擋名可能是 client_secret_123123123123-561dsd54qd65qw4e56qw454d.apps.googleusercontent.com.json, 建議改檔名成 client_secret.json)
7. 將該 json檔放入程式可以讀取的位置
撰寫相對應的 Visual Studio C# .net 程式
1. 在專案中 使用 NuGet 載入 「Google.Apis.Admin.Directory.directory_v1」官方套件
2. 插入程式碼
(以下其中 clientSecretPath 就是上面取得 client_secret.json 的檔案位置)
using Google.Apis.Auth.OAuth2;
using Google.Apis.Admin.Directory.directory_v1;
using Google.Apis.Admin.Directory.directory_v1.Data;
using Google.Apis.Services;
using Google.Apis.Util.Store;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace Googleapi
{
class Program
{
// If modifying these scopes, delete your previously saved credentials
static string[] Scopes = { DirectoryService.Scope.AdminDirectoryUserReadonly };
static string ApplicationName = "Directory API .NET Quickstart";
static void Main(string[] args)
{
UserCredential credential;
string clientSecretPath= "C://apitest//client_secret.json";
string userEmail= "xxxx@3study.com";
// 開啟從 Google OAuth 得到的ID跟私鑰
using (var stream = new FileStream("client_secret.json", FileMode.Open, FileAccess.Read))
{
//官方建議位置 因為執行完 會產生一個檔案 存到該位置
//抓取使用者目錄 C:\Users\your_username\Documents\
//string credPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
//credPath = Path.Combine(credPath, ".credentials/admin-directory_v1-dotnet-quickstart.json"); 合併路徑名稱
string credPath = Path.GetDirectoryName(clientSecretPath); // 取得該檔案的目錄
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
Scopes,
userEmail,
CancellationToken.None,
new FileDataStore(credPath, true)
).Result; // 會將 access_token 相關資訊寫到此檔案中
Console.WriteLine("Credential file saved to: " + credPath);
}
// 通過憑證驗證後,以 Directory Service 來存取使用者相關資訊
// Create Directory API service.
var service = new DirectoryService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
// 定義要抓取的內容
// Define parameters of request.
UsersResource.ListRequest request = service.Users.List();
request.Customer = "my_customer";
request.MaxResults = 20; // 抓取筆數
request.OrderBy = UsersResource.ListRequest.OrderByEnum.Email; // 以 email 作為排序
// List users.
IList<User> users = request.Execute().UsersValue; // 執行抓取 google 上的使用者資訊
Console.WriteLine("Users:");
if (users != null && users.Count > 0) // 判斷是否為空值、NULL
{
foreach (var userItem in users) // 印出 email 及 FullName
{
Console.WriteLine("{0} ({1})", userItem.PrimaryEmail,
userItem.Name.FullName);
}
}
else // 空值時顯示錯誤訊息
{
Console.WriteLine("No users found.");
}
Console.Read(); // 等待任一鍵結束程式
} // EOF Main
} // EOF Class Program
} // EOF Namespace
3. 第一次執行程式 以下視窗
4.如果順利的話 畫面上將會出現結果
5. 最後 就會發現 在指定的目錄上 建立了 取得到的 Credential file
參考:
發表評論
此篇評論