Hi,
I want to try OpenID. I have found the following chapter in the book (rev.
4.9):
---------------------------------
OpenID
We have previously discussed integration with Janrain (which has OpenID
support) and that is the easiest way to use OpenID. Yet sometimes you do
not want to rely on a third party service and you want to access the OpenID
provider directly from the consumer (your app).
Here is an example:
from gluon.contrib.login_methods.openid_auth import OpenIDAuth
auth.settings.login_form = OpenIDAuth(auth)
OpenIDAuth requires the *python-openid* module to be installed separately.
Under the hood, this login method defines the following table:
db.define_table('alt_logins',
Field('username', length=512, default=''),
Field('type', length =128, default='openid', readable=False),
Field('user', self.table_user, readable=False))
which stores the openid usernames for each user. If you want to display the
openids for the current logged in user:
{{=auth.settings.login_form.list_user_openids()}}
---------------------------------
I created a new application and I added this line at the top of db.py
from gluon.contrib.login_methods.openid_auth import OpenIDAuth
This line is at the end:
auth.settings.login_form = OpenIDAuth(auth)
After starting the index-function I got the following error message:
<type 'exceptions.SyntaxError'> invalid table/column name "type" is a "ALL"
reserved SQL keyword
Version
web2py™ (2, 3, 2, datetime.datetime(2012, 12, 19, 11, 52, 16), 'dev')
Python Python 2.7.3: D:\Python27\python.exe
Traceback
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Traceback (most recent call last):
File "D:\dropbox\InfoSMS\web2py\gluon\restricted.py", line 212, in restricted
exec ccode in environment
File "D:/dropbox/InfoSMS/web2py/applications/logins/models/db.py"
<http://127.0.0.1:8000/admin/default/edit/logins/models/db.py>, line
88, in <module>
auth.settings.login_form = OpenIDAuth(auth)
File "D:\dropbox\InfoSMS\web2py\gluon\contrib\login_methods\openid_auth.py",
line 103, in __init__
self._define_alt_login_table()
File "D:\dropbox\InfoSMS\web2py\gluon\contrib\login_methods\openid_auth.py",
line 143, in _define_alt_login_table
Field('user', self.table_user, readable=False),
File "D:\dropbox\InfoSMS\web2py\gluon\dal.py", line 7186, in define_table
table = self.lazy_define_table(tablename,*fields,**args)
File "D:\dropbox\InfoSMS\web2py\gluon\dal.py", line 7203, in lazy_define_table
table = table_class(self, tablename, *fields, **args)
File "D:\dropbox\InfoSMS\web2py\gluon\dal.py", line 7609, in __init__
db.check_reserved_keyword(field_name)
File "D:\dropbox\InfoSMS\web2py\gluon\dal.py", line 6930, in
check_reserved_keyword
'invalid table/column name "%s" is a "%s" reserved SQL keyword' %
(name, backend.upper()))
SyntaxError: invalid table/column name "type" is a "ALL" reserved SQL keyword
Error snapshot [image: help]
<type 'exceptions.SyntaxError'>(invalid table/column name "type" is a "ALL"
reserved SQL keyword)
Any comments?
Regards, Martin
--