Meta Stack Exchange is where users like you discuss bugs, features, and support issues that affect the software powering all 155 Stack Exchange communities.

What is meta?
Here's how it works:
  1. Any Stack Exchange user can ask a question
  2. The community provides support, votes on ideas, and reports bugs
  3. Your voice helps shape the way Stack Exchange operates

According to Jeff Atwood,

… any reasonably large site that attempts discovery (XRDS-style) that can be proven to work with a few well behaving providers and does not accept our provider should definitely be reported on http://meta.stackoverflow.com.

I'm not entirely sure that Google App Engine counts as a reasonably large site, or that it works XRDS-style, but I'm asking anyhow.

I'm setting up a new App Engine application with federated login, and I was able to implement login using Google as a provider, as well as using Yahoo!, WordPress, and the username flavour of MyOpenID, but StackExchange (openid.stackexchange.com) isn't working. (Neither is the non-username flavor of MyOpenID (myopenid.com), but I'm not sure that's related.).

When using either of the latter sites, the provider authenticates me and asks if I want to share information with the App Engine application, and then when I'm redirected back, App Engine throws up a 500 Server Error, and there's nothing in the application's log.

Here's my handler, just to show that I'm not doing anything different between say Yahoo! and StackExchange:

class TryLogin(webapp2.RequestHandler):
    def get(self):
        providers = {
            'Google'   : 'www.google.com/accounts/o8/id',
            'MyOpenID' : 'myopenid.com',
            'Blair Conrad\'s MyOpenID' : 'blair.conrad.myopenid.com',
            'Blair Conrad\'s Wordpress' : 'blairconrad.wordpress.com',
            'Yahoo' : 'yahoo.com',
            'StackExchange': 'openid.stackexchange.com',
            }

        user = users.get_current_user()
        if user:  # signed in already
            self.response.out.write('Hello <em>%s</em>! [<a href="%s">sign out</a>]' % (
                user.nickname(), users.create_logout_url(self.request.uri)))
        else:     # let user choose authenticator
            self.response.out.write('Hello world! Sign in at: ')
            for name, uri in providers.items():
                self.response.out.write('[<a href="%s">%s</a>]' % (
                    users.create_login_url(dest_url= '/trylogin', federated_identity=uri), name))

handlers = [
    ('/trylogin$', TryLogin),
    ...
    ]

Just in case it's a problem on the Google side, I've filed an issue with them too.

In case it's helpful, the sample will be live at libraryhippo27.appspot.com/trylogin for a little while.

Any ideas?

share|improve this question

You must log in to answer this question.

Browse other questions tagged .