使用OAuth2验证Google PubSub POST请求

时间:2017-09-02 10:50:06

标签: google-app-engine google-oauth2 google-cloud-pubsub

我需要形成一个POST来发布Google PubSub消息。我无法使用客户端库,因为他们使用与Google App Engine不兼容的gRPC。我可以形成关键的POST请求,但我不确定如何使用OAuth2对其进行身份验证。

此链接显示了我正在做的事情,但它模糊了身份验证部分。 https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.topics/publish

(如果GAE标准环境支持gRPC,这无关紧要。)

JSONObject obj = new JSONObject();
JSONArray attr = new JSONArray();
obj.put("script_name","foo_script.py");
obj.put("script_args","arg1");
attr.put(obj);
JSONObject jsontop = new JSONObject();
jsontop.put("messages",attr);
URL url = new URL("https://pubsub.googleapis.com/v1/projects/{my-URL}/topics/topic_run_script:publish");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();

此代码返回" 401:UNAUTHENTICATED"。我如何验证它?

1 个答案:

答案 0 :(得分:1)

App Engine有一个API来获取您在调用Google服务时可以使用的访问令牌。有关文档和示例,请参阅https://cloud.google.com/appengine/docs/standard/java/appidentity/#asserting_identity_to_google_apis

如果切换到Java 8环境,您也可以在GAE Std上使用pubsub客户端库。 This doc意味着它应该有用。