Ok, I have figured out why it didn't work for me.
It's because I put the code in user/login/facebook, when I should have just
used user/login. Because the request.vars.code goes to user/login, it is
unable to read when I put the code in the former.
It has created the user and it has logged me in, so all is good now. Now I
just need to figure out how to have Facebook login and the Web2py login
together...
On Friday, August 8, 2014 11:10:06 AM UTC+8, lyn2py wrote:
>
> I looked through the code gluon.contrib.login_methods.oauth20_account and
> just banged out something to test in the module for the Facebook class.
>
> from gluon import current
> print current.request.vars #gave <Storage {}>
>
>
> Looks like it isn't getting the request.vars.code it's supposed to get...
>
>
> On Friday, August 8, 2014 10:50:53 AM UTC+8, lyn2py wrote:
>>
>> Good one Michele!
>>
>> This was what I did:
>>
>> if not self.accessToken():
>> print 'no accesstoken'
>> return None
>>
>> No accessToken(), what then should I do? Or where should I consult?
>>
>> On Friday, August 8, 2014 5:40:09 AM UTC+8, Michele Comitini wrote:
>>>
>>> Could be a session problem.
>>> Check that your session is created and works across page reloads.
>>>
>>> Also check the get_user() method there could be some error raised there
>>> (most likely by the GraphApi), use the debugger or simply put some logging
>>> statements to see what's going on
>>>
>>> I had also troubles with https not properly setup on my side so check
>>> that too
>>>
>>>
>>> 2014-08-07 19:37 GMT+02:00 lyn2py <[email protected]>:
>>>
>>>> Hello,
>>>>
>>>> I have setup the code for FB oauth per web2py book here:
>>>> http://web2py.com/books/default/chapter/29/09/access-control
>>>>
>>>> The code here:
>>>>
>>>> ## Define oauth application id and secret.
>>>>
>>>> FB_CLIENT_ID='xxx'
>>>> FB_CLIENT_SECRET="yyyy"
>>>>
>>>> ## import required modules
>>>> try:
>>>> import json
>>>> except ImportError:
>>>> from gluon.contrib import simplejson as json
>>>> from facebook import GraphAPI, GraphAPIError
>>>> from gluon.contrib.login_methods.oauth20_account import OAuthAccount
>>>>
>>>>
>>>> ## extend the OAUthAccount class
>>>> class FaceBookAccount(OAuthAccount):
>>>>
>>>> """OAuth impl for FaceBook"""
>>>> AUTH_URL="https://graph.facebook.com/oauth/authorize"
>>>>
>>>> TOKEN_URL="https://graph.facebook.com/oauth/access_token"
>>>>
>>>> def __init__(self):
>>>>
>>>> OAuthAccount.__init__(self, None, FB_CLIENT_ID, FB_CLIENT_SECRET,
>>>>
>>>> self.AUTH_URL, self.TOKEN_URL,
>>>>
>>>> scope='email,user_about_me,user_activities,
>>>> user_birthday, user_education_history, user_groups, user_hometown,
>>>> user_interests, user_likes, user_location, user_relationships,
>>>> user_relationship_details, user_religion_politics, user_subscriptions,
>>>> user_work_history, user_photos, user_status, user_videos, publish_actions,
>>>> friends_hometown, friends_location,friends_photos',
>>>>
>>>> state="auth_provider=facebook",
>>>> display='popup')
>>>>
>>>> self.graph = None
>>>>
>>>> def get_user(self):
>>>>
>>>> '''Returns the user using the Graph API.
>>>> '''
>>>> if not self.accessToken():
>>>>
>>>> return None
>>>>
>>>> if not self.graph:
>>>>
>>>> self.graph = GraphAPI((self.accessToken()))
>>>>
>>>> user = None
>>>> try:
>>>>
>>>> user = self.graph.get_object("me")
>>>>
>>>> except GraphAPIError, e:
>>>>
>>>> session.token = None
>>>>
>>>> self.graph = None
>>>>
>>>> if user:
>>>> if not user.has_key('username'):
>>>>
>>>> username = user['id']
>>>>
>>>> else:
>>>> username = user['username']
>>>>
>>>>
>>>> if not user.has_key('email'):
>>>>
>>>> email = '%s.fakemail' %(user['id'])
>>>>
>>>> else:
>>>> email = user['email']
>>>>
>>>> return dict(first_name = user['first_name'],
>>>>
>>>> last_name = user['last_name'],
>>>>
>>>> username = username,
>>>> email = '%s' %(email) )
>>>>
>>>> ## use the above class to build a new login form
>>>> auth.settings.login_form=FaceBookAccount()
>>>>
>>>>
>>>>
>>>> And I have tried logging in, the page displays and asks for my
>>>> permissions, which is all good.
>>>>
>>>> But then, it doesn't appear that I have logged in, in my app. I keep
>>>> returning to the login page like I have not logged in.
>>>> And I checked the database, no new auth_user entries have been created
>>>> there either…
>>>>
>>>> May I know if I had missed a step or did something incorrectly?
>>>>
>>>> I appreciate any help or guidance. Thank you.
>>>>
>>>> --
>>>> 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 [email protected].
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>
--
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 [email protected].
For more options, visit https://groups.google.com/d/optout.