客户端ID,密码等都是正确的。我重新检查了他们。谷歌+登录工作,我也获得访问令牌,但当我尝试使用youtube视频评级api时,它在真实设备中提供403禁止错误。但它在模拟器中工作正常。这可能是什么问题?有人可以帮忙吗?任何帮助表示赞赏。三江源
P.S。之前我没有使用“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
答案 0 :(得分:0)
您将登录错误或成功打印到控制台,而不是显示将在设备上显示的UI。因此,您的登录可能不会成功。
据我所知,Google API也需要Authorization
http标头,因为我们使用它here但是如果它在模拟器上运行我不确定这是问题。