I'm seeing the same problem on Appengine production (and not with dev_appserver) and I'm using the same Twitter library. However, I was seeing some tweets succeeding and some failures. After another user in the Twitter Dev forum posted, I looked at the content of the tweets. The failing tweets all contained the "!" character. After removing that character from tweets, I'm seeing a 100% success rate.
My working theory is that urlfetch is somehow changing how parameters are escaped and that's causing the HMAC in Twitter's Oauth to be rejected. On Wednesday, April 29, 2015 at 7:36:17 AM UTC-7, Ryan Barrett wrote: > > hi all! a number of us have started seeing twitter API errors in prod GAE > in the last week or so. write calls and some search calls are returning > HTTP 401 {"errors":[{"code":32,"message":"Could not authenticate you."}]} > for all users with no code changes on our end. the particularly odd part is > that the same calls with the same code, twitter app key/secret, and even *the > exact same user access token key/secret* work fine in dev_appserver. > > we're on python and mostly using tweepy. our current theory is that > twitter has blacklisted or graylisted app engine's external facing IPs. can > you think of any other ideas? > > more details in this twitter dev forum post. > <https://twittercommunity.com/t/post-to-statuses-update-json-started-hitting-error-32-could-not-authenticate-you-with-no-code-changes/36495> > > thanks in advance! > -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-appengine+unsubscr...@googlegroups.com. To post to this group, send email to google-appengine@googlegroups.com. Visit this group at http://groups.google.com/group/google-appengine. To view this discussion on the web visit https://groups.google.com/d/msgid/google-appengine/028e643d-7b2c-4cbd-b833-e764814b7cd9%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.