私のサブスクリプションを一覧表示しようと、「フィルタなし選択された」エラーをスローしません以下のソースコード:YouTubeのAPI v3は私が<code>Await listRequest.ExecuteAsync()</code>を呼び出すときしかし、私はこのエラーメッセージと例外を取得しています、私のすべての<strong><a href="https://www.youtube.com/subscription_manager" rel="nofollow noreferrer">subscriptions</a></strong>を含むリストを取得しようとしている
Google.Apis.Requests.RequestError選択フィルタなし。次のいずれかが必要です。 mySubscribers、id、mine、myRecentSubscribers、channelId [400]エラー[ メッセージ[フィルターが選択されていません。いずれかの予想:mySubscribers、ID、鉱山、 myRecentSubscribers、channelId]場所[ - パラメータ] 理由[missingRequiredParameter]ドメイン[youtube.parameter]]
私はこれを読んで、私はでそれを理解していませんすべて:
公式参照:
私は私のサブスクリプションを一覧表示しようとする "snippet
" リストセレクタを使用していYouTubeService.Scope.Youtube
スコープ(https://www.googleapis.com/auth/youtube)
を使用していて、私はとも試してみました"id,snippet,contentDetails
"が参加しました。
そして私が認証するために使用している自動生成たclient_secrets.jsonファイルには、このコンテンツを持っている:
{
"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"
]
}
}
私は上記提供された情報と間違って何かをやっている?と、どのように私はこの問題を解決することができますか?ここで
は、関連するソース・コードです:
注私はTrue
にプロパティlistRequest.Mine
を設定した場合、それが例外をスローしませんが、それはゼロのサブスクリプションを見つけました。
C#(オンライン翻訳):
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(オリジナル):
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
コードは正常です。 Googleアカウントに複数のYouTubeアカウントが添付されている可能性があります。あなたが認証すると、それがポップアップし、YouTubeアカウントを選ぶように頼みます。あなたは正しいものを選んだのですか? – DaImTo
channelId、id、mineまたはmySubscriptionsのいずれかをフィルタとして送信する必要があります。そのうちの1つを選択すると、No filter selectedエラーが表示されます。 – DaImTo
@DaImToコメントありがとうございました。私は2つの異なるGoogleアカウントを持っていますが、Youtubeはこれらのアカウントを2つの異なるアカウント(「接続されていません」)として認識し、メインの記録アカウントと「その他のアカウント:... XXX」を表示します。実際には 'GoogleWebAuthorizationBroker.AuthorizeAsync()'メソッドは認証ポップアップを表示していません。そのメソッドには、サブスクリプションを取得したいアカウントの電子メールを渡します。一度認証され、もうポップアップは表示されません。アップロードした動画のリストを表示しようとしているときにも同じ問題が発生します。 – ElektroStudios