0

我正在尝试在我的应用程序中配置 Open Graph,以便当有人单击其中的“链接”时,该应用程序应将其“发布”到他的提要/时间线/活动中。( I created open graph actions for these features and successfully added meta tags in the page)。

所以,我正在使用fandjangofacepy完成这项工作。

这就是我的代码的样子..

from facepy import GraphAPI

@csrf_exempt
@facebook_authorization_required(permissions=["publish_actions"])
def ViewPage (request):
    access_token = request.facebook.user.oauth_token
    profile_id = request.facebook.user.facebook_id
    path = "/%d/feed" %profile_id

    # How should I get the OpenGraph JSON obj
    og_data = ??
    graph = GraphAPI(access_token)
    graph.post(path, og_data)
    ...
    return render_to_response("view.html", context)

我应该如何让打开的图形 JSON obj 将上述graph对象作为参数传递,以便在提要/时间线/活动中发布数据?

如果这不是方法,我该怎么做?

编辑1:

当我尝试

graph = GraphAPI(request.facebook.user.oauth_token)
graph.post("me/namespace:action")

It showed me `OAuthError` 
Error Loc: C:\Python27\lib\site-packages\facepy\graph_api.py in _parse, line 274


graph = GraphAPI(request.facebook.user.oauth_token)
graph.post("me/namespace:action", "object type")

It showed me `TypeError`
loc: same as previous

编辑2:

而不是使用request.facebook.user.oauth_token,我直接使用了我access token的并且代码有效..

graph = GraphAPI (my-hard-coded-access-token)
graph.post("me/feed", message = "working!")

但是,当我尝试

graph.post("me/news.reads", article="working")

It showed me error. 
4

2 回答 2

1

我创建了开放图形操作

me/feed那时你不应该使用

OpenGraph 调用如下

me/[app_namespace]:[action_type]?[object_type]=[OBJECT_URL]

所以,要达到同样的效果,只需将路径设置为me/[app_namespace]:[action_type]

graph.post(
        path = 'me/[app_namespace]:[action_type]',
        [object_type] = '[OBJECT_URL]'
)

og_data不是调用中的参数。所以如果你object_typerecipe那么它会是

graph.post(path, recipe)

如果你想继续使用me/feed那么它应该是

graph.post(path, link)

http://developers.facebook.com/docs/reference/api/user/#posts所述


你不能做这样的海关阅读行动,正确的电话应该是

graph.post(
    path = 'me/news.reads',
    article = 'http://yourobjecturl/article.html'
)

请阅读文档http://developers.facebook.com/docs/opengraph/actions/builtin/#read

于 2012-07-14T20:50:43.757 回答
0

你得到一个,OAuthError因为你用一个类的实例而不是一个字符串来初始化 Graph API 客户端。

试试这个:

graph = GraphAPI(request.facebook.user.oauth_token.token)

或者,您可以使用graphFandjangoUser模型的属性来获取 Graph API 客户端的预初始化实例:

request.facebook.user.graph
于 2012-10-19T14:05:54.790 回答