вот что я делаю, чтобы использовать мою учетную запись в твиттере для входа в мое приложение.
Прежде всего вам нужно подписаться на твиттер-приложение здесь и получить 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)
Вот и все.
У меня все работало нормально
Приветствия