Push pubsub messages on app engine results in 403 error - google-app-engine

I am trying to integrate google pubsub into my project.
So far I managed to get everyhting to work (create/delete topics/subscriptions publish and pull messages) except for push endpoints, I am unable to sent messages to them.
I am using app engine flex environment, and used this code as sample:
https://github.com/GoogleCloudPlatform/cloud-pubsub-samples-java/tree/master/appengine-push
I am not getting any useful logs except a 403 error similar to this "
POST /_ah/push-handlers/receive_message? HTTP/1.1" 403 156 - "-" "versionId-dot-projectId.com"
I followed the document in here which explains what to do in case of 403, but no luck.
https://cloud.google.com/pubsub/docs/troubleshooting
https://cloud.google.com/pubsub/docs/advanced#gae-endpoints
My questions:
Does pubsub need ssl certificates even on app engine.
If it does, what sort of self signed certificates are acceptable.

Related

HTTP Error 500 when upload file to Google Drive via API V3

I have a production app that running almost one year to regularly upload file from Google App Engine (python) to Google Drive using Google Drive API v3.
but today I received lots of error HTTP Error 500.
here's my app engine log:
12:44:44.296 Refreshing access_token
12:44:44.985 An error occurred: <HttpError 500 when requesting https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart&alt=json returned "Internal Error">
12:44:45.054 URL being requested: POST https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart&alt=json (/base/data/home/apps/s~xxx/1.zzz/lib/python2.7/site-packages/googleapiclient/discovery.py:863)
any clue how to fix this error?
is the problem on my side or on Google Drive API side?
any help appreciated. thank you.
the problem in this error is on Google Drive side. i had the same error . but when i reduce my file size , the error does not appear again.

Google Cloud Pubsub authentication error from App Engine

We're having trouble publishing messages to a Google Cloud PubSub topic on Google AppEngine. Using the Application Default credentials works perfect locally. But once it's deployed on Google AppEngine it gives the following error:
<HttpError 403 when requesting https://pubsub.googleapis.com/v1/projects/our-project-id/topics/our-topic:publish?alt=json returned "The request cannot be identified with a project. Please pass a valid API key with the request.">
I would assume that it's will use the service account of app engine to access the PubSub API. Here is the code we used to create the credentials.
credentials = GoogleCredentials.get_application_default()
if credentials.create_scoped_required():
credentials = credentials.create_scoped(['https://www.googleapis.com/auth/pubsub'])
http = httplib2.Http()
credentials.authorize(http)
pubsub_service = build('pubsub', 'v1', http=http)
The error is thrown when publishing the actual message to PubSub.
pubsub_service.projects().topics().publish(topic="projects/out-project-id/topics/out-topic", body = { 'messages' : [ { 'data': base64.b64encode(request.get_data()) }]}).execute()
Not that the same flow works doing API call's to "BigQuery", so it's not a general Google API problem. It seems to be specific to PubSub...
It's a rare case of the service account without project id embedded in it. We fixed your service account and you should be good to go now. Sorry for the trouble.

Error Uploading image to google cloud storage from Google app engine php app

I am trying to upload images to Google cloud storage using CKeditor4.3.3 image2 plugin from google engine app (php).
POst method return 303 status.
GET returns:
Request URL:http://temporary-blobstore-error.appspot.com/
Request Method:GET
Status Code:500 Internal Server Error
Request Headersview source
I get the following error displayed fromhttp://temporary-blobstore-error.appspot.com/:
Error: Server Error
The server encountered an error and could not complete your request.
Please retry your last submission.
If the problem persists, please contact the person responsible for the application you're using, or, if you are that person, report your problem and mention this error message and the query that caused it.
Following is the Request URL:
[http://v01.mysite.appspot.com/_ah/upload/?aa=ask&cat=2/AMmfu6aYRdoHF3NpG27hJRWyx-RH_Vo5r6NhzqyIK-3YRw7I3OHv_zq6SUYElQKg3phbtFu6GIG_MnltZjS03xNPSDKfA-dmsabvdvdmavdmavmvamdsvmdVMDVAMVmadva-e_rmabsmdvdmsdbmsdbmabdmasbdmasbdmsmdYR2MuM7rBb6dEttPzPYVylmw9/ALBNUaYAAAAAUy-nio2CLZdkumm87rKdUq9oOz1hVJgN/&CKEditor=content&CKEditorFuncNum=0&langCode=en][1]

Reading file from GDrive (on Google App Engine) httperror 500

Trying to read file from GDrive (api v2) on (Google App Engine) and getting error:
HttpError: <HttpError 500 when requesting https://www.googleapis.com/drive/v2/files?alt=json&key=XXXXXXXXXXXXXXXXXXXXXXX-anao2UgM returned "">
Yesterday (2014-01-22) all worked fine but today getting error. Anyone had same issue?
check for mixed message content error i.e. that is when you send the data from secured site to non-secured site means data passing from https to http site although very few browser have that capability .
Do reply if it helps you

GAE cloud endpoints - Api not updating after deploy

I'm starting to use cloud endpoints in my GAE project but have been running into issues with the api not updating on the server.
localhost:8888/_ah/api/explorer is ok.
But when I deploy, nothing changes.
myapp.appspot.com:8888/_ah/api/explorer is bad
Further investigation shows the url end points update
example: https://myapp.appspot.com/_ah/api/myapp/v1/foo/list
But the loaded client api is still incorrect.
example: gapi.client.load('myapp', 'v1', callback, url);
gapi.client.myapp.foo.list();
If I changed the call from foo/list to foo/list2, the rest url would update, the api package would not.
I'll try to cover the two cases people could run into:
Client Side:
The Google APIs Explorer web app aggressively caches, so you'll need to clear your cache or force a refresh when you update your API server side to see the changes in the client.
Server Side (In Deployed Production App Engine App):
If you're having deployment issues, there are two places to look when debugging:
Check your Admin Logs (https://appengine.google.com/adminlogs?&app_id=s~YOUR-APP-ID) after deployment. After a successful deployment of your application code, you should see the message:
Completed update of a new default version
and shortly after that you should see:
Successfully updated API configuration
If you this message indicates the API configuration update failed, you should deploy again. If said error is persistent, you should notify us of a bug. If you don't see any message about your API configuration, you should check that the path /_ah/spi/.* is explicitly named in your routing config (app.yaml for Python, web.xml for Java).
Check your Application Logs (https://appengine.google.com/logs?&app_id=s~YOUR-APP-ID) after deployment. After the deployment finishes, Google's API infrastructure makes a request to /_ah/spi/BackendService.getApiConfigs in your application so that your API configuration (as JSON) can be registered with Google's API infrastructure and all the discovery-related configs can be created. If this request does not complete with a 200, then your API changes will not show up since Google's API infrastructure will have nothing to register.
If you are consistently getting a 302 redirect for requests to /_ah/spi/BackendService.getApiConfigs, it is because you (or your generated API config) have specified a "bns adapter" that uses http: as the protocol in your API root, but your web.xml (Java) or app.yaml (Python) is required that paths through /_ah/spi are secure. This will make requests using http: as the protocol be redirected (using 302) to the same page with https: as the protocol. This was discussed on the Trusted Tester forum before going to Experimental.
This is what happened to me.
I tested my endpoint on localhost and it worked fine.
I deployed my endpoint on appspot and when I made requests to it I received in the browser the message 'Not found'.
So I looked in the logs and when I made requests to the endpoint I saw a 404 http error code on favicon file. And in effects I forgot to put that file in my deploy.
So I redeployed my war with the favicon file, the 404 http code disappeared and the endpoint worked fine on appspot too!
I realize that this may sound silly, but it is what I experienced. (I apologize for my poor english)
I noticed that if you upload your app for the first time without the following in your web.xml:
<security-constraint>
<web-resource-collection>
<url-pattern>/_ah/spi/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
Then your bns adapter will be set as http going forward. When I add the above afterwards, I get 302 http code on /_ah/spi/BackendService.getApiConfigs and the endpoints never update.
So now I have reverted to not use https on /_ah/spi and my endpoints are updating. I guess for those that see their endpoints not being updated revert back to the first configuration they had for ssl on /_ah/spi/.
Yaw.
I had the same error Not Found (the 404 error code) when I was calling my API using this URL
https: // MY_APP_ID.appspot.com / _ah / api / MY_SERVICE / v1 / user
I tried everything and finally fixed it by removing the discovery files from WEB-INF and kept only MY_SERVICE-v1.api and then redeployed the API. It works fine now.
I was also getting stale API discovery doc after deploying new version, it took a couple of minutes for GAE to start serving the new one to me.
I had the same problem, and I checked the admin logs, other logs etc... but still my API wasn't updating to the latest version.
So I decided to check in the API code for the last method I had written (I am writing in Java 7). And I found out that GAE doesn't like statements like:
if (!blocked){ .... }
I switched that to:
if (blocked == false) { ... }
And it worked like a charm. So by the looks of it, GAE scans the new API methods and doesn't accept some shortcuts.

Resources