Thanks
You can test it first to see if there is any problem after you get a new computer, and continue to give feedback. Please open a new question.
And this commit is the change I made.
https://github.com/maliming/Abp-3394/commit/f95b70cc24ea96dc4da3b08c8a1ece5e6063dd07
Yes, The code already exists on https://github.com/maliming/Abp-3394/tree/main/src
Can you try this?
services.AddAbpSwaggerGenWithOAuth(
services.AddTransient<SwaggerGenerator>();
services.Replace(ServiceDescriptor.Transient<ISwaggerProvider, MySwaggerGenerator>());
using System;
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.Swagger;
using Swashbuckle.AspNetCore.SwaggerGen;
using Volo.Abp.MultiTenancy;
namespace MyCompanyName.MyProjectName.Web;
public class MySwaggerGenerator : ISwaggerProvider
{
private readonly SwaggerGenerator _innerSwaggerGenerator;
private readonly SwaggerGeneratorOptions _options;
private readonly ICurrentTenant _currentTenant;
public MySwaggerGenerator(SwaggerGenerator innerSwaggerGenerator, SwaggerGeneratorOptions options, ICurrentTenant currentTenant)
{
_innerSwaggerGenerator = innerSwaggerGenerator;
_options = options;
_currentTenant = currentTenant;
}
public OpenApiDocument GetSwagger(string documentName, string host = null, string basePath = null)
{
foreach (var securityScheme in _options.SecuritySchemes)
{
if (securityScheme.Value.Flows.AuthorizationCode != null && _currentTenant.IsAvailable)
{
securityScheme.Value.Flows.AuthorizationCode.AuthorizationUrl = new Uri(securityScheme.Value.Flows.AuthorizationCode.AuthorizationUrl.ToString().Replace("ids", $"{_currentTenant.Name}.ids"));
securityScheme.Value.Flows.AuthorizationCode.TokenUrl = new Uri(securityScheme.Value.Flows.AuthorizationCode.TokenUrl.ToString().Replace("ids", $"{_currentTenant.Name}.ids"));
}
}
return _innerSwaggerGenerator.GetSwagger(documentName, host, basePath);
}
}
You can save the refresh token when calling the request token
. it will both return the access token and refresh token.