菜鸟教程小白 发表于 2022-12-13 16:43:54

ios - Youtube API iOS : Request failed: bad request (400)


                                            <p><p>我正在开发一个需要获取 youtubechannel 并订阅它的 iOS 应用程序。
我可以获得没有 OAuth2 的 channel 列表,但要订阅它,我需要通过 OAuth2 标准获取访问 token 。 </p>

<p>我可以通过一些手工获得访问 token 。但是,当我将此 token 发送到 header 并请求正文进行订阅时,它会给我“错误请求(400)”错误。</p>

<h2>发送请求代码</h2>

<pre><code>NSString *URLString = &#34;];

    AFHTTPRequestOperationManager *manager = ;

    AFHTTPRequestSerializer *requestSerializer = ;

    ] forHTTPHeaderField:@&#34;Authorization&#34;];
    ;

    manager.requestSerializer = requestSerializer;

    NSDictionary *parameters = @{@&#34;snippet&#34;:@{
                                       @&#34;resourceId&#34;:@{
                                                 @&#34;channelId&#34;:[[ valueForKey:@&#34;snippet&#34;] valueForKey:@&#34;channelId&#34;],
                                                 @&#34;kind&#34;:@&#34;youtube#channel&#34;
                                                 }
                                       }
                                 };

    [manager POST:URLString parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
      NSLog(@&#34;response ; %@&#34;,responseObject);

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
      NSLog(@&#34;failed&#34;);      
    }];
    }
</code></pre>

<h2>出现跟随错误</h2>

<pre><code>Error Domain=com.alamofire.error.serialization.response Code=-1011 &#34;Request failed: bad request (400)&#34; UserInfo={com.alamofire.serialization.response.error.response=&lt;NSHTTPURLResponse: 0x7fcfbccae3a0&gt; { URL: https://www.googleapis.com/youtube/v3/subscriptions?part=snippet&amp;key=myKey } { status code: 400, headers {
    &#34;Cache-Control&#34; = &#34;private, max-age=0&#34;;
    &#34;Content-Encoding&#34; = gzip;
    &#34;Content-Length&#34; = 118;
    &#34;Content-Type&#34; = &#34;application/json; charset=UTF-8&#34;;
    Date = &#34;Wed, 25 May 2016 09:28:57 GMT&#34;;
    Expires = &#34;Wed, 25 May 2016 09:28:57 GMT&#34;;
    Server = GSE;
    Vary = &#34;Origin, X-Origin&#34;;
    &#34;alt-svc&#34; = &#34;quic=\&#34;:443\&#34;; ma=2592000; v=\&#34;34,33,32,31,30,29,28,27,26,25\&#34;&#34;;
    &#34;alternate-protocol&#34; = &#34;443:quic&#34;;
    &#34;x-content-type-options&#34; = nosniff;
    &#34;x-frame-options&#34; = SAMEORIGIN;
    &#34;x-xss-protection&#34; = &#34;1; mode=block&#34;;
} },
</code></pre>

<p>如有任何帮助,将不胜感激。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我发现了问题。有两个错误。</p>

<ol>
<li><p>其实我是在设置不同的requestSerializer,传递不同的序列化器。</p></li>
<li><p>我正在将 APIKey 传递给 url 进行订阅,但不需要传递它。</p></li>
</ol>

<p><strong>我的新代码是</strong></p>

<pre><code> NSString *URLString = ;
      AFHTTPRequestOperationManager *manager = ;
      AFHTTPRequestSerializer *requestSerializer = ;
      ] forHTTPHeaderField:@&#34;Authorization&#34;];
      ;

      manager.requestSerializer = requestSerializer;

      NSDictionary *parameters =@{@&#34;snippet&#34;:@{
                                              @&#34;resourceId&#34;:@{
                                                      @&#34;channelId&#34;:[[ valueForKey:@&#34;snippet&#34;] valueForKey:@&#34;channelId&#34;],
                                                      @&#34;kind&#34;:@&#34;youtube#channel&#34;
                                                      }
                                              }
                                    };

      NSLog(@&#34;parameters : %@&#34;,parameters);
      [manager POST:URLString parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
            NSLog(@&#34;response ; %@&#34;,responseObject);
      } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            NSLog(@&#34;failed&#34;);
      }];
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - Youtube API iOS : Request failed: bad request (400),我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/37433203/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/37433203/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - Youtube API iOS : Request failed: bad request (400)