Создание токена аутентификации. Использование OAuth 2.0 для вызова API разработчика Google.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Создание токена аутентификации. Использование OAuth 2.0 для вызова API разработчика Google.

Сообщение Anonymous »

Я пытаюсь создать токен аутентификации с помощью OAuth 2.0 для приложения .NET MAUI, используя проект Google Cloud Console для вызова API разработчика Google. Для этого я создал проект в консоли Google Cloud, включил API разработчика Google и настроил экран согласия с типом внешнего приложения, создал идентификатор клиента OAuth 2.0 с помощью тип приложения Android, а также добавлены имя пакета и отпечаток SHA-1. Я установил приведенные ниже пакеты NuGet для проекта MAUI.
  • Microsoft.Identity.Client
    < li>System.Net.Http.Json.
Я добавил приведенный ниже код для реализации потока OAuth в проекте MAUI. >

Код: Выделить всё

        public class GoogleAuthService
{
private readonly IPublicClientApplication _pca;

public GoogleAuthService()
{
_pca = PublicClientApplicationBuilder.Create("OAuth 2.0 client ID")
.WithRedirectUri("com.googleusercontent.apps.OAuth 2.0 client ID:/oauth2redirect")
.Build();
}
public async Task AuthenticateAsync()
{
try
{
// Scopes for accessing Google APIs
string[] scopes = { "https://www.googleapis.com/auth/androidpublisher" };

var result = await _pca.AcquireTokenInteractive(scopes)
.WithParentActivityOrWindow(MainActivity.CurrentActivity)
.ExecuteAsync();

Console.WriteLine($"GoogleAPIAccessToken: {result.AccessToken}");
return result.AccessToken; // Use this access token for API calls
}
catch (Exception ex)
{
// Handle authentication errors
Console.WriteLine($"Authentication failed: {ex.Message}");
return null;
}
}
}
В MainActivity.cs:

Код: Выделить всё

public static MainActivity CurrentActivity { get; private set; }

protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
CurrentActivity = this;
Instance = this;
}

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
AuthenticationContinuationHelper.SetAuthenticationContinuationEventArgs(requestCode, resultCode, data);
}
В AndroidManifest.xml: Чтобы сгенерировать токен доступа из приведенной ниже функции, я вызываю GoogleAuthService();

Код: Выделить всё

private readonly GoogleAuthService _googleAuthService;

_googleAuthService = new GoogleAuthService();

public async void LoginButtonClicked(Object sender, EventArgs e)
{
string token = await _googleAuthService.AuthenticateAsync();
}
Если я нажму кнопку «Вход», произойдет переход на страницу входа в Microsoft, а если я попытаюсь войти в систему с помощью почты, появится следующая ошибка.
< blockquote>

Мы не можем выполнить ваш запрос
unauthorized_client: клиент не существует или не доступен для потребителей. Если вы являетесь разработчиком приложения, настройте новое приложение с помощью регистрации приложений на портале Azure по адресу https://go.microsoft.com/fwlink/?linkid=2083908.

Снимок экрана:
[img]https:/ /i.sstatic.net/65A3cT1B.jpg[/img]

Итак, я не могу сгенерировать токен аутентификации с помощью OAuth 2.0. Правильный ли этот процесс? Как сгенерировать токен аутентификации для вызова API разработчика Google?
Предложите решение этой проблемы.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -developer
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»