Как получить OAuth AccessToken (Google) для публикации вакансии в Google Hire на C #? - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь опубликовать работу в 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 Ответ

0 голосов
/ 04 июля 2018

Код

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.

...