如何使用OAuth&汇总帐户? web2py的?

时间:2011-12-18 23:05:57

标签: oauth openid aggregate oauth-2.0 web2py

Tumblr提供了一个非常简单的界面来链接您的Twitter和Facebook帐户,以便通过他们的服务发布。我想在我的应用程序中做类似的事情 - 为人们聚合Flickr,Facebook,Twitter等不同帐户提供单点 - 我不想每年花1000美元用于Janrain的帐户映射这样做。

如何使用web2py汇总多个帐户?我有一种感觉我应该start here,但希望有更多具体的教程或最佳实践记录。

1 个答案:

答案 0 :(得分:1)

这里我正在做的是使用我的Twitter帐户登录我的应用程序。

首先,您需要在此处签署推特应用程序并获取https://dev.twitter.com/ 和应用程序密钥,应用程序令牌等。 然后在web2py应用程序中编辑db.py文件,并确保具有以下内容:

## create all tables needed by auth if not custom tables
auth_table = db.define_table(
    auth.settings.table_user_name,
    Field('first_name', length=128, default=""),
    Field('last_name', length=128, default=""),
    Field('username', length=128, default="", unique=True),
    Field('password', 'password', length=256,
          readable=False, label='Password'),
    Field('registration_id', length=128, default= "",
          writable=False, readable=False))

auth_table.username.requires = IS_NOT_IN_DB(db, auth_table.username)

auth.define_tables()

在同一文件的底部添加:

#  Twitter API 
consumer_key = <your key>
consumer_secret =  <your secret>

request_token_url = 'https://twitter.com/oauth/request_token'
access_token_url = 'https://twitter.com/oauth/access_token'
authorize_url = 'https://twitter.com/oauth/authorize'

import gluon.contrib.simplejson as json

class TwitterOAuth(OAuthAccount):
    def get_user(self):        
        if self.accessToken() is not None:            
            client = Client(self.consumer, self.accessToken())
            resp, content = client.request('http://api.twitter.com/1/account/verify_credentials.json')
            if resp['status'] != '200':
                # cannot get user info. should check status
                return None
            u = json.loads(content)            
            return dict(username=u['screen_name'], name=u['name'], registration_id=str(u['id']))



auth.settings.login_form=TwitterOAuth(globals(),consumer_key,consumer_secret, 
authorize_url, request_token_url, access_token_url)

就是这样。

一切都很顺利

干杯