Sorry to bring this up again, but am having the same problem. accessToken()
returns None
Could you elaborate what you did to get it working? putting what code ,
where?
thanks
On Friday, August 8, 2014 at 11:24:11 AM UTC+8, lyn2py wrote:
>
> 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.