.NET Core Web APIアプリケーション認証に問題があります。 私はしたい: 1)モバイルアプリ(現iOS)のGoogleでユーザーを認証 2)この認証を使用して、AspNetCore.IdentityとEntity Frameworkコアを使用してデータベースにユーザーレコードを作成します 3)同じ認証を使用してGoogleカレンダーAPI .NETのコアサーバモバイルアプリケーションでの認証後に.NETコアサーバーでユーザーにサインインする方法
からこれまでのところ、私は1と3を実装する方法を考え出したが、数2
まわりで私の頭をラップすることができない私の理解では、サードパーティと認証されたユーザーに署名することで、ドキュメンテーションのために、SignInManagerインスタンスメソッドExternalLoginSignInAsyncを使用する必要があります。 ログインプロバイダ(単純な "Google"とします)とユニークプロバイダキーの2つの引数をとります。私の問題は、私がどこで入手できるのかわからないことです。ここで
は、私は、モバイルアプリ上での結果では、Googleのログインから受信したすべてのもののリストです:
ここで私がで呼び出そうとする方法がある
// POST api/signup
[HttpPost]
public async Task<bool> Post([FromBody]string authorizationCode, [FromBody]string userId)
{
var tokenFromAuthorizationCode = await GetGoogleTokens(userId, authorizationCode);
var result = await signInManager.ExternalLoginSignInAsync(
"Google", tokenFromAuthorizationCode.IdToken, false);
if (result.Succeeded)
return true;
var externalLoginInfo = new ExternalLoginInfo(
ClaimsPrincipal.Current, "Google", tokenFromAuthorizationCode.IdToken, null);
return await SignInUser(externalLoginInfo);
}
private async Task<bool> SignInUser(ExternalLoginInfo info)
{
var newUser = new AppUser { Email = "[email protected]", UserName = "TestUser" };
var identResult = await userManager.CreateAsync(newUser);
if (identResult.Succeeded)
{
identResult = await userManager.AddLoginAsync(newUser, info);
if (identResult.Succeeded)
{
await signInManager.SignInAsync(newUser, false);
return true;
}
}
return false;
}
private async Task<TokenResponse> GetGoogleTokens(string userId, string authorizationCode)
{
TokenResponse token;
try
{
// TODO: Save access and refresh token to AppUser object
token = await authFlow.Flow.ExchangeCodeForTokenAsync(
userId, authorizationCode, "http://localhost:60473/signin-google", CancellationToken.None);
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
return token;
}
私の質問は次のとおりです。ですREST API経由で認証を構築している場合は正しいパスになります。その場合は、Googleのプロバイダキーはどこで入手できますか? ありがとうございます。