This is what I've added on db.py. Hope this helps.
auth = Auth(db)
auth_table = db.define_table(
auth.settings.table_user_name,
Field('fullname', 'string', default=""),
Field('first_name', length=128,default=''),
Field('last_name', length=128,default=''),
Field('email', length=128,default=''),
Field('username', 'string', unique=True),
Field('user_bio', 'text', default=""),
Field('website', 'string', default=""),
Field('profile_picture', 'string', default=""),
Field('instagram_id', 'string', unique=True),
Field('password', 'password', length=256, readable=False, label='Password'),
Field('access_token','string'),
Field('registration_id', length=128, default= "", writable=False, readable=False))
class InstagramOauth():
def login_url(self, next="/"):
from instagram import client
instagram_client = client.InstagramAPI(client_id= client_id, client_secret=client_secret, redirect_uri=redirect_uri)
return instagram_client.get_authorize_url(scope=["likes","comments"])
def get_user(self):
from instagram import client
instagram_client = client.InstagramAPI(client_id= client_id, client_secret=client_secret, redirect_uri=redirect_uri)
if request.vars.code:
code = request.vars.code
access_token, instagram_user = instagram_client.exchange_code_for_access_token(code)
return dict(username = instagram_user['username'],instagram_id = instagram_user['id'],user_bio=instagram_user['bio'],website = instagram_user['website'],profile_picture = instagram_user['profile_picture'],full_name=instagram_user['full_name'],registration_id = instagram_user['id'],access_token=access_token)
auth.settings.login_form = InstagramOauth()