2012-11-09 42 views
4

我試圖創建一個臉部通知Facebook的通知& fandjango,但我不斷得到相同的錯誤,使用Django包創建facebook通知:[15](#15)必須使用應用程序調用此方法access_token

@facebook_authorization_required 
@csrf_exempt  
def notify_self(request): 

    token = request.facebook.user.oauth_token.token #user token 
    token_app=facepy.utils.get_application_access_token('APP_ID','APP_SECRET_ID') 
    graph = GraphAPI(token) 
    graph.post(
     path = 'me/notifications', 
     template = '#Text of the notification', 
     href = 'URL', 
     access_token= token_app 
    ) 

    return HttpResponse('<script type=\'text/javascript\'>top.location.href = \'URL\';</script>')<code> 

當我檢查應用程序上的access_token它https://developers.facebook.com/tools/debug/說,這是一個有效的令牌(我找回我的應用程序的ID)

我也嘗試

圖表= GraphAPI(token_app)

但其發送我:

[2500]一種有源訪問令牌必須用於查詢當前用戶的信息。

我的應用程序擁有我需要的所有權限,我搜索了一段時間,但沒有找到任何幫助,所以我在這裏問。

編輯:正確的代碼是

@facebook_authorization_required 
@csrf_exempt  
def notify_self(request): 
    token_app=facepy.utils.get_application_access_token('APP_ID','APP_SECRET_ID') 
    graph = GraphAPI(token_app) 
    graph.post(
     path = 'me/notifications', 
     template = '#Text of the notification', 
     href = 'URL' 
    ) 

    return HttpResponse('<script type=\'text/javascript\'>top.location.href = \'URL\'</script>') 

感謝joaopsf

回答

1

最後我發現在那裏有問題。 當我與

圖試圖= GraphAPI(token_app)

我的好方法,唯一要做的事情就是刪除

的access_token = token_app

當指令GraphAPI(token_app)時,令牌被保存,所以不需要再次給它。

正確的代碼是:

@facebook_authorization_required 
@csrf_exempt  
def notify_self(request): 

    token = request.facebook.user.oauth_token.token #user token 
    token_app=facepy.utils.get_application_access_token('APP_ID','APP_SECRET_ID') 
    graph = GraphAPI(token) 
    graph.post(
     path = 'me/notifications', 
     template = '#Text of the notification', 
     href = 'URL', 
     access_token= token_app 
    ) 

    return HttpResponse('<script type=\'text/javascript\'>top.location.href = \'URL\'</script>') 

希望這將幫助別人

+1

這對我不起作用。我找到了一個不同的解決方案,我會把它作爲下面的答案發布。 此外,您在答案中發佈的代碼與您在問題中發佈的代碼完全相同 - 您可能希望檢查並修復答案。 – JoaoPSF

0

當創建的通知,您應該使用應用令牌,而不是用戶令牌。所以,標記= ...行是沒有必要的。

此外,由於您使用的是應用令牌而不是用戶令牌,因此您不能在路徑中使用「me/...」;您必須指定用戶標識。

這是爲我工作:

@facebook_authorization_required 
@csrf_exempt 
def notify_self(request): 
    token_app = facepy.utils.get_application_access_token(
     settings.FACEBOOK_APPLICATION_ID, 
     settings.FACEBOOK_APPLICATION_SECRET_KEY 
    ) 
    graph = GraphAPI(token_app) 
    graph.post(
     path='%s/notifications' % request.facebook.user.facebook_id, 
     template='#Text of the notification', 
     href='my targe URL', 
    ) 
    return 'etc' 
0

Jiloko忘了更新代碼,我試過的代碼和正確的代碼是在這裏:

@facebook_authorization_required 
@csrf_exempt  
def notify_self(request): 
    token_app=facepy.utils.get_application_access_token('APP_ID','APP_SECRET_ID') 
    graph = GraphAPI(token_app) 
    graph.post(
     path = 'me/notifications', 
     template = '#Text of the notification', 
     href = 'URL' 
    ) 

    return HttpResponse('<script type=\'text/javascript\'>top.location.href = \'URL\'</script>') 

你可以改變「我/ 'USER_ID/notifications'的通知'

相關問題