Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook应用程序托管在谷歌应用程序引擎上_Facebook_Google App Engine_Facebook Graph Api_Facebook Fql_Python 2.7 - Fatal编程技术网

Facebook应用程序托管在谷歌应用程序引擎上

Facebook应用程序托管在谷歌应用程序引擎上,facebook,google-app-engine,facebook-graph-api,facebook-fql,python-2.7,Facebook,Google App Engine,Facebook Graph Api,Facebook Fql,Python 2.7,我是Facebook应用程序的新手,我已经有一个应用程序在GAE上运行(使用python)。我想将它与Facebook集成,这样我就可以访问一些用户的数据来帮助我个性化应用程序(如喜欢的页面、兴趣、他们来自哪里等数据)。并分享应用程序的输出,让朋友看到 我想我会选择上的Facebook应用程序选项 我不知道从哪里开始,有一些教程(大多数都很旧,有些使用的脚本不推荐使用,所以有点令人担忧),还有FBML。。我在想,也许我只需要使用Facebook的登录,然后使用FQL访问这些数据,就可以获得相同的

我是Facebook应用程序的新手,我已经有一个应用程序在GAE上运行(使用python)。我想将它与Facebook集成,这样我就可以访问一些用户的数据来帮助我个性化应用程序(如喜欢的页面、兴趣、他们来自哪里等数据)。并分享应用程序的输出,让朋友看到

我想我会选择上的Facebook应用程序选项

我不知道从哪里开始,有一些教程(大多数都很旧,有些使用的脚本不推荐使用,所以有点令人担忧),还有FBML。。我在想,也许我只需要使用Facebook的登录,然后使用FQL访问这些数据,就可以获得相同的数据

我不知道我是否会被新的https限制所困扰(Facebook说,从2011年10月起,必须有SSL证书)

所以底线是。。我从哪里开始

  • 为您的web服务器购买SSL证书,这样您就可以遵守新规则
  • 创建/设置应用程序以获取应用程序id和密码
  • 学习Javascript SDK,我认为它是最容易实现的
  • 学习GraphAPI,了解对象及其属性以及它们的连接
  • 您可以在此处使用JS SDK:并在此处使用图形:
  • 慢慢地将代码引入Web服务器上的页面。首先让身份验证工作正常,然后继续获取基本用户信息

  • 您需要根据Facebook验证您的服务器应用程序(GAE):您需要实现

    请参阅LeanEngine(开源)以获取示例实现:

    一旦您通过身份验证并获得用户FB auth token,您就可以使用来获取各种数据。

    我们开始:

    从该链接下载::

    从下载中,您将有:
    signed_request.py
    解析facebook将在您的 画布url:
    https://apps.facebook.com/myapp
    in
    POST
    方法

    graph\u api.py
    graphapi

    注意:您将包括来自facebook js sdk编写的cookies的访问令牌。
    关于FBJSSDK,请参见以下答案:javascript部分

    在索引页中:

    fb_app_secret='abcd...'
    fb_app_id = 123345
    def index(request):
        if request.POST:
            signed_request_param = request.POST.get('signed_request)        
            if signed_request_param:  
                #signed_request.py 
                signed_request_dic = signed_request.parse_signed_request(signed_request_param, fb_app_secret)
                 if signed_request_dic:
                    if signed_request_dic.has_key('user_id'): 
                        fb_uid = signed_request_dic['user_id']
                        #you got your man that is previously authorized your fb app : mypp
    
    对于连续呼叫,您将使用我上面提到的cookies:

    def my_page(request):
        my_dict = None
        my_dict = signed_request.get_user_from_cookie(request.COOOKIES, fb_app_id, fb_app_secret)
        if my_dict:
            if my_dict.has_key('uid'):            
                fb_uid = my_dict['uid']
                fb_uid = int(fb_uid)
                #you got your registered user again.
    
    对于注册,我已经提到了从FBJSSDK进行注册的最简单方法

    #finally for SSL, in your app.ymal:
    
    - url: .*
      script: django_bootstrap.py
      secure: optional 
    
    不要忘记为internet explorer设置P3P,iframre cookie问题:

    def my_page(request):
        ....
        response = render_to_response('mypage.html', view_params )
        response["P3P"] = 'CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"'   
        return response 
    

    1.AppEngine不支持自定义服务器或客户端证书。2。Javascript可用于FB客户端流身份验证。OP需要基于服务器的感知。@Peter,你所做的一切都是用JS SDK抓取的令牌。很抱歉,AppEngine被限制为甚至不允许SSL。我建议找一个新的平台来开发,因为SSL现在是facebook应用程序的半“要求”。所以,客户端通过JS从FB获取令牌,然后将其传递给GAE服务器?不好,因为在这种情况下,GAE必须信任客户。你永远不应该信任互联网上的客户。这就是Facebook(和OAuth)有服务器端身份验证流的原因。此外,GAE有SSL,只是没有自定义证书。每个GAE应用程序都有一个由谷歌提供的完整有效的服务器证书。你可能想看看这个问题