I answered an almost the same question at http://stackoverflow.com/questions/2313573/google-apps-login-in-django/2575075#2575075. Check it out.
Edited:
Actually, your question can be separated into two related questions.
- How to build an application for Google Marketplace?
- How to authenticate with Google Apps Account to login into your application?
You don't really have to authenticate with Google Apps. But since your user already have an Google Apps Account, it's nice to let the user login with their existing account instead of building your own user management module from scratch.
For the first question, when you register your application on Google Marketplace, you provide your login url. It's in http://yourdomain.com/auth/domain.com kind of format. The domain.com part is the domain name of the organization who choose to install your application. When one organization installed your application, they will use that login url as the entrance point. It is your application determines what to do with the request. Typically, you redirect the user to the login page. Since you want the user to login with his Google Apps Account, you could generate the login request and redirect the user to Google's server. And that part is related to the second question.
For the second question, you could let the user to login into your application with their Google Apps Account by implementing Google's AuthSub or OpenID authentication mechanism. As you're asking for the openid library, I guess you chose openid. If you want to use openid to authenticate, you should pay your attention to Google's custom discovery method which is not in the standard library. Check my answer in the other question I answered for more information.
I just uploaded my patched version of python-openid-2.2.4 to github. Here is the link: http://github.com/adieu/python-openid/
BTW: you don't really have to ask the user to put some file on their server. But if they do so, they could change the default openid authentication backend server.
Maybe I should write a blog post about this problem :)