Google Oauth-Fehler: mindestens ein client Geheimnisse (Installiert oder Web) festgelegt werden
Ich bin mit Google Oauth 2.0-hochladen von videos auf Youtube über unseren server.
Meine client ID ist ein "service-Konto". Ich habe die json-Schlüssel und fügte zu meiner Lösung.
Hier ist der relevante code:
private async Task Run(string filePath)
{
UserCredential credential;
var keyUrl = System.Web.HttpContext.Current.Server.MapPath("~/content/oauth_key.json");
using (var stream = new FileStream(keyUrl, FileMode.Open, FileAccess.Read))
{
credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
//This OAuth 2.0 access scope allows an application to upload files to the
//authenticated user's YouTube channel, but doesn't allow other types of access.
new[] { YouTubeService.Scope.YoutubeUpload },
"user",
CancellationToken.None
);
}
var youtubeService = new YouTubeService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = Assembly.GetExecutingAssembly().GetName().Name
});
Wenn ich es laufen lasse, bekomme ich diesen Fehler: mindestens ein client-Geheimnisse (Installiert oder Web) festgelegt werden sollte.
Jedoch in meiner json-es gibt keine "client secret":
{
"private_key_id": "9d98c06b3e730070806dcf8227578efd0ba9989b",
"private_key": "-----BEGIN PRIVATE KEY-----\nMIICdQIBADANBgkqhk etc,
"client_email": "546239405652-8igo05a5m8cutggehk3rk3hspjfm3t04@developer.gserviceaccount.com",
"client_id": "546239405652-8igo05a5m8cutggehk3rk3hspjfm3t04.apps.googleusercontent.com",
"type": "service_account"
}
also gehe ich davon aus das ich etwas übersehen.
Vielleicht kann ich nicht verwenden, das "service-Konto" ? weiß nicht...
- hast du versucht ? jede Lösung ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kein Experte auf C#, aber es sieht aus wie Sie versuchen, verwenden Sie die service-Konto zu tun, die OAuth2-web-server-flow, die sollten nicht arbeiten.
Sie wollen wahrscheinlich verwenden ServiceAccountCredential statt.
Für mehr Informationen über verschiedene Google-OAuth2 fließt, entnehmen Sie bitte der doc für web-server, service-Konto, etc.
Service accounts will only work with Gsuite email accounts. The admin of the Gsuite (domain) account will have to grant the service account access to the users email account. Unfortunately i don't have access to a Gsuite account so cant help you set it up. This might help Perform G Suite Domain-Wide Delegation of Authority If this is a normal Gmail user account you are trying to access then you cant use a service account. You will either have to go though the SMTP / IMAP servers or using Oauth2 to authenticate the user.
Die Lösung, die verwendet
json
Datei ist ganz ähnlich.Hier ist das Beispiel, das erstellen
VisionService
mitGoogleCredential
- Objekt erstellt ausjson
- Datei mitServiceAccountCredential
.diesem Beispiel benötigen Sie zwei
NuGet
Pakete:Ich es geschafft, ein service-Konto für die Arbeit mit einer P12-Datei, möchte Aber wissen, wie man mit der JSON-Datei, Oder nur den Wert aus der JSON-Datei, um das Zertifikat zu erstellen.
Um die token
Und das ist, wie ich den token hab ich