Skip to content

Commit 738b3ed

Browse files
committed
added FACEBOOK_APP_ID and FACEBOOK_APP_SECRET as kwargs
1 parent 97157b6 commit 738b3ed

File tree

7 files changed

+67
-34
lines changed

7 files changed

+67
-34
lines changed

django_facebook/admin.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,11 @@ class OpenGraphShareAdmin(admin.ModelAdmin):
6464
actions = [admin_actions.retry_open_graph_share,
6565
admin_actions.retry_open_graph_share_for_user]
6666

67-
def view_share(self, instance):
67+
def view_share(self, instance, *args, **kwargs):
6868
share_id = instance.share_id
6969
url_format = 'https://developers.facebook.com/tools/explorer/%s/?method=GET&path=%s%%2F'
70-
url = url_format % (facebook_settings.FACEBOOK_APP_ID, share_id)
70+
facebook_app_id = kwargs.get(facebook_settings.FACEBOOK_APP_ID_KWARGS, facebook_settings.FACEBOOK_APP_ID)
71+
url = url_format % (facebook_app_id, share_id)
7172
template = '<a href="%s">%s</a>' % (url, share_id)
7273
return template
7374
view_share.allow_tags = True

django_facebook/api.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ def get_persistent_graph(request, *args, **kwargs):
9292
return graph
9393

9494

95-
def get_facebook_graph(request=None, access_token=None, redirect_uri=None, raise_=False):
95+
def get_facebook_graph(request=None, access_token=None, redirect_uri=None, raise_=False, *args, **kwargs):
9696
'''
9797
given a request from one of these
9898
- js authentication flow (signed cookie)
@@ -137,6 +137,7 @@ def get_facebook_graph(request=None, access_token=None, redirect_uri=None, raise
137137
if signed_data and 'oauth_token' in signed_data:
138138
access_token = signed_data['oauth_token']
139139

140+
facebook_app_id = kwargs.get(facebook_settings.FACEBOOK_APP_ID_KWARGS, facebook_settings.FACEBOOK_APP_ID)
140141
if not access_token:
141142
# easy case, code is in the get
142143
code = request.REQUEST.get('code')
@@ -145,7 +146,7 @@ def get_facebook_graph(request=None, access_token=None, redirect_uri=None, raise
145146

146147
if not code:
147148
# signed request or cookie leading, base 64 decoding needed
148-
cookie_name = 'fbsr_%s' % facebook_settings.FACEBOOK_APP_ID
149+
cookie_name = 'fbsr_%s' % facebook_app_id
149150
cookie_data = request.COOKIES.get(cookie_name)
150151

151152
if cookie_data:

django_facebook/canvas.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@
33

44

55
def generate_oauth_url(scope=facebook_settings.FACEBOOK_DEFAULT_SCOPE,
6-
next=None, extra_data=None):
6+
next=None, extra_data=None, *args, **kwargs):
77
query_dict = QueryDict('', True)
8-
canvas_page = (next if next is not None else
9-
facebook_settings.FACEBOOK_CANVAS_PAGE)
10-
query_dict.update(dict(client_id=facebook_settings.FACEBOOK_APP_ID,
8+
facebook_app_id = kwargs.get(facebook_settings.FACEBOOK_APP_ID_KWARGS,
9+
facebook_settings.FACEBOOK_APP_ID)
10+
facebook_canvas_page = kwargs.get(facebook_settings.FACEBOOK_CANVAS_PAGE_KWARGS,
11+
facebook_settings.FACEBOOK_CANVAS_PAGE)
12+
canvas_page = (next if next is not None else facebook_canvas_page)
13+
query_dict.update(dict(client_id=facebook_app_id,
1114
redirect_uri=canvas_page,
1215
scope=','.join(scope)))
1316
if extra_data:

django_facebook/settings.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,23 @@
55

66
# : Your facebook app id
77
FACEBOOK_APP_ID = getattr(settings, 'FACEBOOK_APP_ID', None)
8+
9+
# : Keyword argument name for facebook app id
10+
FACEBOOK_APP_ID_KWARGS = getattr(settings, 'FACEBOOK_APP_ID_KWARGS', 'facebook_app_id')
11+
812
# : Your facebook app secret
913
FACEBOOK_APP_SECRET = getattr(settings, 'FACEBOOK_APP_SECRET', None)
14+
15+
# : Keyword argument name for facebook app secret
16+
FACEBOOK_APP_SECRET_KWARGS = getattr(settings, 'FACEBOOK_APP_SECRET_KWARGS', 'facebook_app_secret')
17+
1018
# : The default scope we should use, note that registration will break without email
1119
FACEBOOK_DEFAULT_SCOPE = getattr(settings, 'FACEBOOK_DEFAULT_SCOPE', [
1220
'email', 'user_about_me', 'user_birthday', 'user_website'])
1321

22+
# : Keyword argument name for facebook app default scope
23+
FACEBOOK_DEFAULT_SCOPE_KWARGS = getattr(settings, 'FACEBOOK_DEFAULT_SCOPE_KWARGS', 'facebook_default_scope')
24+
1425
# : If we should store likes
1526
FACEBOOK_STORE_LIKES = getattr(settings, 'FACEBOOK_STORE_LIKES', False)
1627
# : If we should store friends
@@ -28,10 +39,13 @@
2839
FACEBOOK_REGISTRATION_BACKEND = getattr(
2940
settings, 'FACEBOOK_REGISTRATION_BACKEND', default_registration_backend)
3041

31-
# Absolute canvas page url as per facebook standard
42+
# : Absolute canvas page url as per facebook standard
3243
FACEBOOK_CANVAS_PAGE = getattr(settings, 'FACEBOOK_CANVAS_PAGE',
3344
'http://apps.facebook.com/django_facebook_test/')
3445

46+
# Keyword argument name for facebook app canvas page
47+
FACEBOOK_CANVAS_PAGE_KWARGS = getattr(settings, 'FACEBOOK_CANVAS_PAGE_KWARGS', 'facebook_canvas_page')
48+
3549
# Disable this setting if you don't want to store a local image
3650
FACEBOOK_STORE_LOCAL_IMAGE = getattr(
3751
settings, 'FACEBOOK_STORE_LOCAL_IMAGE', True)

django_facebook/utils.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,14 +228,15 @@ def queryset_iterator(queryset, chunksize=1000, getfunc=getattr):
228228
gc.collect()
229229

230230

231-
def get_oauth_url(scope, redirect_uri, extra_params=None):
231+
def get_oauth_url(scope, redirect_uri, extra_params=None, *args, **kwargs):
232232
'''
233233
Returns the oAuth URL for the given scope and redirect_uri
234234
'''
235235
scope = parse_scope(scope)
236+
facebook_app_id = kwargs.get(facebook_settings.FACEBOOK_APP_ID_KWARGS, facebook_settings.FACEBOOK_APP_ID)
236237
query_dict = QueryDict('', True)
237238
query_dict['scope'] = ','.join(scope)
238-
query_dict['client_id'] = facebook_settings.FACEBOOK_APP_ID
239+
query_dict['client_id'] = facebook_app_id
239240

240241
query_dict['redirect_uri'] = redirect_uri
241242
oauth_url = 'https://www.facebook.com/dialog/oauth?'

django_facebook/views.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,18 @@
2626

2727
@csrf_exempt
2828
@facebook_required_lazy
29-
def connect(request, graph):
29+
def connect(request, graph, *args, **kwargs):
3030
'''
3131
Exception and validation functionality around the _connect view
3232
Separated this out from _connect to preserve readability
3333
Don't bother reading this code, skip to _connect for the bit you're interested in :)
3434
'''
3535
backend = get_registration_backend()
3636
context = RequestContext(request)
37+
facebook_app_id = kwargs.get(facebook_settings.FACEBOOK_APP_ID_KWARGS, facebook_settings.FACEBOOK_APP_ID)
3738

3839
# validation to ensure the context processor is enabled
39-
if not context.get('FACEBOOK_APP_ID'):
40+
if not context.get('FACEBOOK_APP_ID') and not facebook_app_id:
4041
message = 'Please specify a Facebook app id and ensure the context processor is enabled'
4142
raise ValueError(message)
4243

open_facebook/api.py

Lines changed: 33 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,9 @@ class FacebookAuthorization(FacebookConnection):
403403
'''
404404
@classmethod
405405
def convert_code(cls, code,
406-
redirect_uri='http://local.mellowmorning.com:8000/facebook/connect/'):
406+
redirect_uri='http://local.mellowmorning.com:8000/facebook/connect/',
407+
client_id=facebook_settings.FACEBOOK_APP_SECRET,
408+
client_secret=facebook_settings.FACEBOOK_APP_SECRET):
407409
'''
408410
Turns a code into an access token
409411
@@ -420,14 +422,16 @@ def convert_code(cls, code,
420422
:returns: dict
421423
422424
'''
423-
kwargs = cls._client_info()
425+
kwargs = cls._client_info(client_id, client_secret)
424426
kwargs['code'] = code
425427
kwargs['redirect_uri'] = redirect_uri
426428
response = cls.request('oauth/access_token', **kwargs)
427429
return response
428430

429431
@classmethod
430-
def extend_access_token(cls, access_token):
432+
def extend_access_token(cls, access_token,
433+
client_id=facebook_settings.FACEBOOK_APP_SECRET,
434+
client_secret=facebook_settings.FACEBOOK_APP_SECRET):
431435
'''
432436
https://developers.facebook.com/roadmap/offline-access-removal/
433437
We can extend the token only once per day
@@ -443,17 +447,15 @@ def extend_access_token(cls, access_token):
443447
444448
:returns: dict
445449
'''
446-
kwargs = cls._client_info()
450+
kwargs = cls._client_info(client_id, client_secret)
447451
kwargs['grant_type'] = 'fb_exchange_token'
448452
kwargs['fb_exchange_token'] = access_token
449453
response = cls.request('oauth/access_token', **kwargs)
450454
return response
451455

452456
@classmethod
453-
def _client_info(cls):
454-
kwargs = dict(client_id=facebook_settings.FACEBOOK_APP_ID)
455-
kwargs['client_secret'] = facebook_settings.FACEBOOK_APP_SECRET
456-
return kwargs
457+
def _client_info(cls, client_id, client_secret):
458+
return dict(client_id=client_id, client_secret=client_secret)
457459

458460
@classmethod
459461
def parse_signed_data(cls, signed_request,
@@ -495,20 +497,25 @@ def parse_signed_data(cls, signed_request,
495497
return data
496498

497499
@classmethod
498-
def get_app_access_token(cls):
500+
def get_app_access_token(cls, *args, **kwargs):
499501
'''
500502
Get the access_token for the app that can be used for
501503
insights and creating test users
502504
application_id = retrieved from the developer page
503505
application_secret = retrieved from the developer page
504506
returns the application access_token
505507
'''
506-
kwargs = {
508+
facebook_app_id = kwargs.get(facebook_settings.FACEBOOK_APP_ID_KWARGS,
509+
facebook_settings.FACEBOOK_APP_ID)
510+
facebook_app_secret = kwargs.get(facebook_settings.FACEBOOK_APP_SECRET_KWARGS,
511+
facebook_settings.FACEBOOK_APP_SECRET)
512+
513+
data = {
507514
'grant_type': 'client_credentials',
508-
'client_id': facebook_settings.FACEBOOK_APP_ID,
509-
'client_secret': facebook_settings.FACEBOOK_APP_SECRET,
515+
'client_id': facebook_app_id,
516+
'client_secret': facebook_app_secret,
510517
}
511-
response = cls.request('oauth/access_token', **kwargs)
518+
response = cls.request('oauth/access_token', **data)
512519
return response['access_token']
513520

514521
@memoized
@@ -521,7 +528,7 @@ def get_cached_app_access_token(cls):
521528
return app_access_token
522529

523530
@classmethod
524-
def create_test_user(cls, app_access_token, permissions=None, name=None):
531+
def create_test_user(cls, app_access_token, permissions=None, name=None, *args, **kwargs):
525532
'''
526533
Creates a test user with the given permissions and name
527534
@@ -544,16 +551,19 @@ def create_test_user(cls, app_access_token, permissions=None, name=None):
544551
',', ' ').replace('_', '')
545552
name = name or default_name
546553

547-
kwargs = {
554+
facebook_app_id = kwargs.get(facebook_settings.FACEBOOK_APP_ID_KWARGS,
555+
facebook_settings.FACEBOOK_APP_ID)
556+
557+
data = {
548558
'access_token': app_access_token,
549559
'installed': True,
550560
'name': name,
551561
'method': 'post',
552562
'permissions': permissions,
553563
}
554-
path = '%s/accounts/test-users' % facebook_settings.FACEBOOK_APP_ID
564+
path = '%s/accounts/test-users' % facebook_app_id
555565
# add the test user data to the test user data class
556-
test_user_data = cls.request(path, **kwargs)
566+
test_user_data = cls.request(path, **data)
557567
test_user_data['name'] = name
558568
test_user = TestUser(test_user_data)
559569

@@ -615,11 +625,13 @@ def get_or_create_test_user(cls, app_access_token, name=None, permissions=None,
615625
return test_user
616626

617627
@classmethod
618-
def get_test_users(cls, app_access_token):
619-
kwargs = dict(access_token=app_access_token)
620-
path = '%s/accounts/test-users' % facebook_settings.FACEBOOK_APP_ID
628+
def get_test_users(cls, app_access_token, *args, **kwargs):
629+
data = dict(access_token=app_access_token)
630+
facebook_app_id = kwargs.get(facebook_settings.FACEBOOK_APP_ID_KWARGS,
631+
facebook_settings.FACEBOOK_APP_ID)
632+
path = '%s/accounts/test-users' % facebook_app_id
621633
# retrieve all test users
622-
response = cls.request(path, **kwargs)
634+
response = cls.request(path, **data)
623635
test_users = response['data']
624636
return test_users
625637

0 commit comments

Comments
 (0)