What is meta? ×
Meta Stack Exchange is where users like you discuss bugs, features, and support issues that affect the software powering all 131 Stack Exchange communities.

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 .