YouTube 视频评级 api (v3) 在模拟器中工作,但在真实设备中出现 403 错误

Posted

技术标签:

【中文标题】YouTube 视频评级 api (v3) 在模拟器中工作,但在真实设备中出现 403 错误【英文标题】:YouTube video rating api (v3) works in simulator but gives 403 error in real devices 【发布时间】:2016-08-02 20:02:14 【问题描述】:

客户 ID、密码等正确。我重新检查了它们。 Google + 登录有效,我也获得了访问令牌,但是当我尝试使用 YouTube 视频评级 API 时,它在真实设备中给出了 403 禁止错误。但是它在模拟器中运行良好。这里可能是什么问题?有人可以帮忙吗?

附:在我没有在代码中使用“gc.setScope(”https://www.googleapis.com/auth/youtube.force-ssl“)”之前,它在模拟器中也给出了同样的禁止错误,但现在我添加了该行并在模拟器中工作,但在真实设备中给出了 403 禁止错误。

sign.addActionListener((e) -> 
    String clientId = "873649282964-7r6088ua0jhoua2tngpblhf4u8elda55.apps.googleusercontent.com";
    String redirectURI = "https://www.youtube.com/";
    String clientSecret = "_T7cyd-kWQKDzH0ZwiIeq1jr";
    gc = GoogleConnect.getInstance();
    gc.setClientId(clientId);
    gc.setRedirectURI(redirectURI);
    gc.setClientSecret(clientSecret);
    gc.setScope("https://www.googleapis.com/auth/youtube.force-ssl");
    gc.setCallback(new LoginCallback() 
        @Override
        public void loginFailed(String errorMessage) 
            System.out.println("errorMessage");
        

        @Override
        public void loginSuccessful() 
            System.out.println("login success");
        
    );
    if (!gc.isUserLoggedIn()) 
        gc.doLogin();
     else 
        //get the token 
        token = gc.getAccessToken().getToken();
    
);

Button like = new Button("Like");
likeForm.add(like);

like.addActionListener((e) -> 
    token = gc.getAccessToken().getToken();
    ConnectionRequest cr = new ConnectionRequest() 

        @Override
        protected void readResponse(InputStream input) throws IOException 
            super.readResponse(input);
        

        @Override
        protected void postResponse() 
            like.setText("Like: " + "ok");
        
    ;
    cr.setPost(true);
    cr.setUrl("https://www.googleapis.com/youtube/v3/videos/rate?id=" + "lIHr4ZVMBoo" + "&rating=like&access_token="+ token);
    System.out.println("geturl " + cr.getUrl());
    cr.setDuplicateSupported(true);     
    NetworkManager.getInstance().addToQueueAndWait(cr);
);

错误日志:

04-15 08:05:10.761: E/GMPM(5344): getGoogleAppId failed with status: 10
04-15 08:05:10.761: E/GMPM(5344): Uploading is not possible. App measurement disabled
04-15 08:06:02.901: E/Volley(2900): [154] BasicNetwork.performRequest: Unexpected response code 403 for https://www.googleapis.com/plus/v1/people/me

【问题讨论】:

根据document,如果API返回HTTP 403响应码,那么你的应用可能没有注册。许多 API 将未注册应用程序的查询量限制设置为 0,并在超过查询量限制时返回 403 响应代码。您可以查看此page,它解释了如何在 Google Developers Console 中注册您的应用,包括数字签名的 .apk 文件证书。 @KENdi 不,我做了所有这些。错误日志显示“BasicNetwork.performRequest:googleapis.com/plus/v1/people/me 的意外响应代码 403” 【参考方案1】:

您将登录错误或成功打印到控制台,而不是显示在设备上可见的 UI。所以你的登录可能不会成功。

据我所知,Google API 还需要 Authorization http 标头,因为我们使用它 here 但如果它在模拟器上工作,我不确定这是问题所在。

【讨论】:

以上是关于YouTube 视频评级 api (v3) 在模拟器中工作,但在真实设备中出现 403 错误的主要内容,如果未能解决你的问题,请参考以下文章

翻译 YouTube 视频标题和说明 | V3 API

如何使用 Google.Apis.YouTube.v3 和 C# 将视频上传到 youtube?

Youtube /v3/search API 不再返回直播视频

Youtube API v3:使用服务帐户访问 youtube 视频

如何在 YouTube api v3 中获取 YouTube 视频的 cc 字幕

喜欢使用 YouTube 数据 API v3 在 YouTube 上使用访问令牌的视频吗?