Как получить OAuth AccessToken (Google) для публикации вакансии в Google Hire на C#?
Я пытаюсь опубликовать работу в Google Hire. Предварительные условия сделаны, как указано здесь. Я получил учетные данные службы в файле JSON.
Я попытался получить токен доступа, используя:
var jsonFilePath = HttpContext.Current.Server.MapPath("~/GoogleKey/client_secret.json");
var token = GetAccessTokenFromJSONKey(path,"https://www.googleapis.com/auth/indexing");
public static async Task<string> GetAccessTokenFromJSONKeyAsync(string jsonKeyFilePath, params string[] scopes)
{
using (var stream = new FileStream(jsonKeyFilePath, FileMode.Open, FileAccess.Read))
{
return await GoogleCredential
.FromStream(stream) // Loads key file
.CreateScoped(scopes) // Gathers scopes requested
.UnderlyingCredential // Gets the credentials
.GetAccessTokenForRequestAsync(); // Gets the Access Token
}
}
public static string GetAccessTokenFromJSONKey(string jsonKeyFilePath, params string[] scopes)
{
return GetAccessTokenFromJSONKeyAsync(jsonKeyFilePath, scopes).Result;
}
но проблема в том, что после выполнения функции она просто зависает / перестает отвечать. Я не могу получить какое-либо значение в "токене" .
Могу ли я узнать, где я делаю неправильно???
Заранее спасибо.
1 ответ
Решение
Код
var keyFilePath = @"C:\Users\LindaL\Documents\.credentials\ServiceAccount.json";
var clientEmail = "1046123799103-6v9cj8jbub068jgmss54m9gkuk4q2qu8@developer.gserviceaccount.com";
var scopes = new[] { "https://www.googleapis.com/auth/indexing" };
GoogleCredential credential;
using (var stream = new FileStream(serviceAccountCredentialFilePath, FileMode.Open, FileAccess.Read))
{
credential = GoogleCredential.FromStream(stream)
.CreateScoped(scopes);
}
var token = await credential.UnderlyingCredential.GetAccessTokenForRequestAsync();
Приведенный выше код должен запросить токен для вас с помощью idexing api.