Ich versuche, eine Liste abzurufen, das alle meine subscriptions, aber ich bin immer eine Ausnahme mit dieser Fehlermeldung, wenn Await listRequest.ExecuteAsync()
in der anruf Quellcode unten:YouTube API v3 wirft „keinen Filter ausgewählt“ Fehler versucht, meine Abonnements zur Liste
Google.Apis.Requests.RequestError Kein Filter ausgewählt. Erwarteter Wert von: mySubscribers, id, meins, myRecentSubscribers, channelId [400] Fehler [ Nachricht [Kein Filter ausgewählt. Erwartet man von: mySubscribers, id, mine, myRecentSubscribers, channelId] Standort [- Parameter] Reason [missingRequiredParameter] Domain [youtube.parameter]]
ich diese Zeilen lesen, aber ich verstehe es überhaupt nicht alle:
Und die offizielle Referenz:
Ich bin mit dem YouTubeService.Scope.Youtube
Umfang (https://www.googleapis.com/auth/youtube)
Ich bin mit der "snippet
" -Liste Selektor Meine Abonnements versuchen Liste, ich habe auch versucht, mit "id,snippet,contentDetails
" beigetreten.
Und die automatisch generierte client_secrets.json Datei, die ich zu authentifizieren bin mit, hat folgenden Inhalt:
{
"installed":{
"client_id":"xxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com",
"project_id":"xxxxxxxxxxxxxxxxxxx",
"auth_uri":"https://accounts.google.com/o/oauth2/auth",
"token_uri":"https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs",
"client_secret":"xxxxxxxxxxxxxxxxx",
"redirect_uris":[
"urn:ietf:wg:oauth:2.0:oob",
"http://localhost"
]
}
}
ich etwas falsch mit den Informationen tun oben ?, zur Verfügung gestellt und, Wie könnte ich dieses Problem beheben?
Hier ist die relevante Quelle-Code:
Beachten Sie, dass, wenn ich die Eigenschaft listRequest.Mine
auf True
gesetzt, dann ist es nicht die Ausnahme auslöst, aber dann findet es Null-Abonnements.
C# (Online-Übersetzung):
public Task<List<Subscription>> GetSubscriptions(SubscriptionsResource.ListRequest.OrderEnum resultSorting)
{
if (!(this.isAuthorizedB)) {
throw new InvalidOperationException(this.authExceptionMessage);
} else {
SubscriptionsResource.ListRequest listRequest = Await this.client.Subscriptions.List("snippet");
// listRequest.MySubscribers = False
// listRequest.Mine = False
listRequest.MaxResults = 50;
listRequest.Order = resultSorting;
SubscriptionListResponse searchResponse = Await listRequest.ExecuteAsync();
List<Subscription> subscriptions = new List<Subscription>();
while (true) {
foreach (Subscription searchResult in searchResponse.Items) {
subscriptions.Add(searchResult);
}
if (!string.IsNullOrEmpty(searchResponse.NextPageToken)) {
listRequest.PageToken = searchResponse.NextPageToken;
searchResponse = listRequest.ExecuteAsync();
} else {
break; // TODO: might not be correct. Was : Exit Do
}
}
return subscriptions;
}
}
VB.NET (original):
Public Async Function GetSubscriptions(ByVal resultSorting As SubscriptionsResource.ListRequest.OrderEnum) As Task(Of List(Of Subscription))
If Not (Me.isAuthorizedB) Then
Throw New InvalidOperationException(Me.authExceptionMessage)
Else
Dim listRequest As SubscriptionsResource.ListRequest = Me.client.Subscriptions.List("snippet")
With listRequest
' .MySubscribers = False
' .Mine = False
.MaxResults = 50
.Order = resultSorting
End With
Dim searchResponse As SubscriptionListResponse = Await listRequest.ExecuteAsync()
Dim subscriptions As New List(Of Subscription)
Do While True
For Each searchResult As Subscription In searchResponse.Items
subscriptions.Add(searchResult)
Next searchResult
If Not String.IsNullOrEmpty(searchResponse.NextPageToken) Then
listRequest.PageToken = searchResponse.NextPageToken
searchResponse = Await listRequest.ExecuteAsync()
Else
Exit Do
End If
Loop
Return subscriptions
End If
End Function
Ihr Code sieht gut aus. Hast du zufällig mehr als ein YouTube-Konto mit deinem Google-Konto verknüpft? Wenn du dich authentifizierst, wird es erscheinen und dich auffordern, ein YouTube-Konto auszuwählen. Hast du den richtigen ausgewählt? – DaImTo
Sie müssen entweder channelId, id, mine oder mySubscriptions senden, das sind die Filter. Ohne eine dieser Optionen erhalten Sie den Fehler Kein Filter ausgewählt. – DaImTo
@DaImTo Danke für den Kommentar. Ich bin mir nicht sicher, ob Sie das verstanden haben, ich habe zwei verschiedene Google-Konten, Youtube erkennt diese Konten als zwei verschiedene Konten (nicht "angefügt"), es zeigt das Hauptkonto und "Andere Konten: ... XXX" an. Tatsächlich zeigt die 'GoogleWebAuthorizationBroker.AuthorizeAsync()' Methode kein Authentifizierungs-Popup an, ich übergebe diese Methode die E-Mail des Accounts, auf dem ich Abonnements abholen möchte, sie authentifiziert einmal und zeigt das Popup nicht mehr an. Ich habe das gleiche Problem, wenn ich versuche, meine hochgeladenen Videos aufzulisten. – ElektroStudios