gpt4 book ai didi

java - YouTube 之类(评级)无法正常工作

转载 作者:太空宇宙 更新时间:2023-11-04 12:45:54 27 4
gpt4 key购买 nike

我已登录并获取身份验证 token ,但当我单击“赞”按钮时,YouTube 评级不起作用。我还需要做什么才能让它发挥作用?如果我在网络浏览器中使用该网址,它会要求授权并执行,然后它就可以工作。但从应用程序来看,这还没有发生。我还设置了所有必需的客户端 ID、客户端密码等。

connectionForYoutubeData();

f.setLayout(new BoxLayout(BoxLayout.Y_AXIS));
Button signIn = new Button("signIn");
Button like = new Button("Like");
like.setText("Like: " + likeCount);

Container mainContainer = new Container(new BoxLayout(BoxLayout.Y_AXIS));
mainContainer.add(signIn);
mainContainer.add(like);
f.add(mainContainer);

signIn.addActionListener((e) -> {
String clientId = "704790222159-n1cpb3g1q3plirslu5739apc0gnnv4pp.apps.googleusercontent.com";
String redirectURI = "https://www.youtube.com/";
String clientSecret = "q_cxGCCbX5GVC99kxgstjksB";
Login gc = GoogleConnect.getInstance();
gc.setClientId(clientId);
gc.setRedirectURI(redirectURI);
gc.setClientSecret(clientSecret);
gc.setCallback(new LoginCallback() {
@Override
public void loginFailed(String errorMessage) {
like.addActionListener((c) -> {
Label newLabel = new Label("beck unsuccess");
f.add(newLabel);
});
}
@Override
public void loginSuccessful() {
Dialog.show("Logged In", "you are currently logged in ", "OK", null);
}
});
if (!gc.isUserLoggedIn()) {
gc.doLogin();
} else {
token = gc.getAccessToken().getToken();
}
});

like.addActionListener((e) -> {
ConnectionRequest cr = new ConnectionRequest() {
@Override
protected void readResponse(InputStream input) throws IOException {
super.readResponse(input);
}
@Override
protected void postResponse() {
super.postResponse();
}
};
cr.setPost(true);
cr.setUrl("https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.videos.rate?" + "id=" + "Z98hXV9GmzY" + "&rating=like" + "&access_token=" + token + "&key=AIzaSyCAETrMkZeJ_nTq4ZdP1Jq6BFtA_11TR6I");
cr.setDuplicateSupported(true);
NetworkManager.getInstance().addToQueueAndWait(cr);
});
f.revalidate();

登录响应 header :

Transfer-Encoding=[chunked]
null=[HTTP/1.1 200 OK]
Alt-Svc=[quic=":443"; ma=2592000; v="32,31,30,29,28,27,26,25"]
Server=[GSE]
X-Content-Type-Options=[nosniff]
Pragma=[no-cache]
Date=[Fri, 01 Apr 2016 04:17:24 GMT]
Alternate-Protocol=[443:quic]
Accept-Ranges=[none]
X-Frame-Options=[SAMEORIGIN]
Cache-Control=[no-cache, no-store, max-age=0, must-revalidate]
Vary=[Origin,Accept-Encoding, X-Origin]
Expires=[Fri, 01 Jan 1990 00:00:00 GMT]
X-XSS-Protection=[1; mode=block]
Content-Type=[application/json; charset=UTF-8]

类似响应头:

X-Frame-Options=[DENY]
null=[HTTP/1.1 200 OK]
Server=[Google Frontend]
Content-Length=[994]
Date=[Fri, 01 Apr 2016 04:18:11 GMT]
Content-Type=[text/html; charset=utf-8]

更新:

@Override
protected void readResponse(InputStream input) throws IOException {
JSONParser jSONParser = new JSONParser();
results = jSONParser.parseJSON(new InputStreamReader(input));
System.out.println("parsed results: " + results);
}

如果我尝试读取上面的响应,它会在输出中给出以下错误

Expected true for key value!
Expected true for key value!
java.lang.ArrayIndexOutOfBoundsException
Expected true for key value!
Expected true for key value!
Expected true for key value!
Expected null for key value!
Expected null for key value!
Expected null for key value!
Expected true for key value!
Expected true for key value!
Expected true for key value!
Expected true for key value!
parsed results: {}

更新2:
我发现我使用了错误的 API 进行评级。正确的是

cr.setUrl("https://www.googleapis.com/youtube/v3/videos/rate?id=" + "kF94Jwx9ugU" + "&rating=like&access_token=" + token + "&key=xxxxxx");

但它给出 403 Forbidden 错误。 P.S 我已经登录并获得了 token 值。所以我猜这不应该是身份验证错误。响应长度也为空,响应正文也是如此。因此,谷歌的欺诈检测部分在这里无效。

最佳答案

我注意到您没有检查对类似调用的响应,该调用可能包含 JSON 或数据来表明为什么不接受此调用。我建议使用网络监视器来查看该响应。

请注意,调用此类 API 可能会很困难,因为 Google 可能具有欺诈检测功能,并且可能已经将您标记为试图规避类似系统的人。

关于java - YouTube 之类(评级)无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36328744/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com