Interesting plugin, thanks for the link. 

I took that repository, tar'ed and gzip'ed it, and uploaded it as a plugin. 
Says "App does not exist or you are not authorized". No idea what that 
means, so I did it manually in a new app called oauth. Here is what I get 
as an exception when trying to open up the new app:

Traceback (most recent call last):
  File "/home/james/Development/web2py/gluon/restricted.py", line 217, in 
restricted
    exec ccode in environment
  File 
"/home/james/Development/deemok-web2py/applications/oauth/models/plugin_social_auth.py"
 <http://127.0.0.1/admin/edit/oauth/models/plugin_social_auth.py>, line 7, in 
<module>
    Field('user', 'reference auth_user', writable=False, notnull=True))
  File "/home/james/Development/web2py/gluon/dal.py", line 8139, in define_table
    table = self.lazy_define_table(tablename,*fields,**args)
  File "/home/james/Development/web2py/gluon/dal.py", line 8156, in 
lazy_define_table
    table = table_class(self, tablename, *fields, **args)
  File "/home/james/Development/web2py/gluon/dal.py", line 8665, in __init__
    check_reserved(field_name)  File 
"/home/james/Development/web2py/gluon/dal.py", line 7850, in 
check_reserved_keyword
    'invalid table/column name "%s" is a "%s" reserved SQL/NOSQL keyword' % 
(name, backend.upper()))
SyntaxError: invalid table/column name "uid" is a "ALL" reserved SQL/NOSQL 
keyword

Can you possibly rename the field:

Field('uid', 'string', notnull=True, writable=False, length=255),

to:

Field('oauth_uid', 'string', notnull=True, writable=False, length=255),

Or something along those lines?





On Friday, February 21, 2014 3:55:00 AM UTC-5, Quint wrote:
>
> Hi,
>  
> You could have a look at 
> python-social-auth<https://github.com/omab/python-social-auth> and 
> if you like it and don't know how to integrate it, have a look at this 
> plugin <https://code.google.com/p/w2p-social-auth/> to integrate it in 
> web2py.
>  
>  
> Quint
>
> On Wednesday, February 19, 2014 12:33:29 AM UTC+1, James Q wrote:
>
>> I have a feeling that this topic comes up often, but I cannot seem to 
>> Google a good solution to this. Essentially, I want users to be able to 
>> login using either the built in Auth, or login via some Oauth provider, 
>> like Twitter and Facebook. I have seen previous solutions using 
>> ExtendedLoginForm and custom Twitter classes that inherit from 
>> OAuthProvider, but they no longer seem to work. The Twitter code I find no 
>> longer supports the newest Twitter API; the linkedin code from the web2py 
>> book also  does not work.
>>
>> Here is sample code I have now, which only seems to constantly redirect 
>> me to the logout page:
>>
>> 1) Created new web2py application by copying the welcome one to a folder 
>> named 'oauth'
>> 2) Added this code to db.py (taken from multiple examples online):
>>
>> from gluon.contrib.login_methods.oauth10a_account import OAuthAccount
>> from oauth2 import Client, Consumer, Token
>>
>> class TwitterAccount(OAuthAccount):
>>     AUTH_URL = "http://twitter.com/oauth/authorize";
>>     TOKEN_URL = "https://twitter.com/oauth/request_token";
>>     ACCESS_TOKEN_URL = "http://twitter.com/oauth/access_token";
>>     CLIENT_ID = "..."
>>     CLIENT_SECRET = "..."
>>
>>     def __init__(self, g):
>>         OAuthAccount.__init__(self, g, self.CLIENT_ID, 
>> self.CLIENT_SECRET, self.AUTH_URL, self.TOKEN_URL, self.ACCESS_TOKEN_URL)
>>
>>     def get_user(self):
>>         if self.accessToken() is not None:
>>             consumer = Consumer(key=self.CLIENT_ID, 
>> secret=self.CLIENT_SECRET)
>>             client = Client(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
>>                 #redirect("http://google.com";)
>>                 return None
>>             u = json.loads(content)
>>             return dict(first_name = u['name'], 
>> username=u['screen_name'], name=u['name'], registration_id=u['id'])
>>
>> auth.settings.login_form=TwitterAccount(g=globals())
>>
>> 3) Going to 127.0.0.1/oauth/user/login redirects me to user/logout.
>>
>>
>> Besides my frustration in trying to find timely information about this, 
>> is there working code out there that is *recent*, in that it works with 
>> latest web2py and the latest Oauth implementations? I'd really appreciate 
>> any tips or hints anyone has.
>>
>>
>>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to