Duende.BFF со Strava OAuth: получение данных из тела json после обмена токена на доступ и токен обновления
Я разрабатываю приложение Hosted Blazor WASM, которое использует OAuth Strava для аутентификации. Поскольку я не хочу хранить токены доступа и обновления в браузере, я использую Duende.BFF.
Моя программа.cs настроена так:
{
options.DefaultScheme = "cookie";
options.DefaultChallengeScheme = "oidc";
options.DefaultSignOutScheme = "oidc";
})
.AddCookie("cookie", options =>
{
options.Cookie.Name = "__Host-blazor";
options.Cookie.SameSite = SameSiteMode.Strict;
})
.AddOAuth("oidc", options =>
{
options.ClientId = "clientid";
options.ClientSecret = "clientsecret";
options.AuthorizationEndpoint = "https://www.strava.com/oauth/authorize";
options.TokenEndpoint = "https://www.strava.com/api/v3/oauth/token";
options.CallbackPath = "/bff/callback";
options.Scope.Add("activity:read_all,read_all");
options.SaveTokens = true;
});
Это прекрасно работает, но Strava что-то делает после обмена токена на токен доступа и обновления. Ответ такой:
"token_type": "Bearer",
"expires_at": 1568775134,
"expires_in": 21600,
"refresh_token": "e5n567567...",
"access_token": "a4b945687g...",
"athlete": {
#{summary athlete representation}
}
}
Я хотел бы добавить свойство спортсмена к заявлениям пользователей, но пока не вижу способа сделать это.
Я попытался расширить эти конечные точки:
services.AddTransient<ILoginService, DefaultLoginService>();
services.AddTransient<IUserService, DefaultUserService>();
Но я думаю, что это уже слишком поздно в цепочке, потому что исходный ответ здесь больше не доступен.
Есть ли способ расширить это где-то? Я попытался просмотреть исходный код Duende.BFF, но не смог понять, где установлены токены доступа и обновления.