2015-06-26 61 views
2

我正在爲一個網站開發一個python GAE應用程序,我試圖讓聯邦登錄進行。Google Identity Toolkit(v3)是否與GAE/python沙箱兼容?

根據Identity Platform choosing guide,網站的最佳解決方案似乎是Google Identity Toolkit (web)。通過所有相關的文檔,我能找到然後轉移到教程,在那裏我遇到顛簸去 - 安裝identity-toolkit-python-client方案未能與相關於CFFI庫C編譯錯誤,類似這樣的:

# python -m pip install identity-toolkit-python-client 
... 
gcc -pthread -fno-strict-aliasing -fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -DNDEBUG -fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -DOPENSSL_LOAD_CONF -fPIC -I/usr/include/python2.7 -c src/cryptography/hazmat/bindings/__pycache__/_Cryptography_cffi_a269d620xd5c405b7.c -o build/temp.linux-x86_64-2.7/src/cryptography/hazmat/bindings/__pycache__/_Cryptography_cffi_a269d620xd5c405b7.o 

src/cryptography/hazmat/bindings/__pycache__/_Cryptography_cffi_a269d620xd5c405b7.c:2:20: fatal error: Python.h: No such file or directory 

#include <Python.h> 

        ^

compilation terminated. 

error: command 'gcc' failed with exit status 1 

我設法最終在爲我的linux發行版安裝了一些特定的軟件包之後正確地安裝了這個軟件包,但是這些失敗導致了我的實際問題(這些教程非常通用,我無法發現任何有關GAE限制的提示)。

GAE python sandbox documentation純Python代碼被認爲是存在於GAE應用程式:

爲Python運行時環境中的所有代碼必須是純Python和 不包括任何C擴展或其它代碼必須編譯。

我沒有看到包含在GAE SDK或其第三方庫,據我瞭解意味着我不得不install it as a 3rd party library在自己的應用程序的身份工具箱。但純Python碼限制適用於這些庫還有:

您可以將任何第三方庫添加到您的應用程序,只要它 在「純Python」中實現(無C擴展)否則 在App Engine運行時環境中起作用。

因此標題中的問題。

我錯過了什麼嗎?

謝謝。

到目前爲止,我正在使用webapp2和jinja2。

回答

1

多挖我終於事情進展之後。

從蒂姆·霍夫曼和dsalama這兩個答案應用,但真正補籃規模是這樣的回答:How to import lib folder within Modules這讓我意識到,第三方庫的文檔不與位於一個單獨的目錄模塊應用相當OK(典型記錄

  • lib目錄(或庫本身,這取決於所使用的vendoring方案):應用程式結構https://cloud.google.com/appengine/docs/python/modules/#Python_Configuration

    基本上vendoring方案必須根據需要爲它使用第三方庫的每一個模塊施加必須在e中可見/可訪問ach模塊目錄

  • 每個模塊都必須具有自己的appengine_config.py文件,銷售代碼與模塊的.yaml文件並排可見,因爲該模塊無權訪問位於應用程序根目錄中的文件(如果選擇的自定義方案依賴於這樣的文件)
2

這不支持100%,受支持的第三方庫如PyCrypto,numpy lxml都有基於'C'的擴展名,但這些都直接由google支持。你不能添加你自己的不在列表中。

見第三方庫文檔https://cloud.google.com/appengine/docs/python/tools/libraries27

你必須繪製由谷歌VS你自己提供的第三方庫支持「第三方庫」之間的區別。

另外你還沒有說過你在用什麼框架。您可能會發現這是值得看的authomatic http://peterhudec.github.io/authomatic/

出於對盒支持:

  • OAuth的1.0A提供商:到位桶,Flickr的,Meetup網站,plurk相關,微博 的tumblr,UbuntuOne,Vimeo的,Xero的,Xing和雅虎。 OAuth 2。0提供商: 亞馬遜,Behance,Bitly,Cosm,DeviantART,Eventbrite,Facebook, Windows Live,Yammer和Yandex上的Foursquare,谷歌,LinkedIn,PayPal,Reddit,Viadeo, python-openid和基於OpenID的Google App Engine 。
+0

這是一個問題,而不是一個聲明:)是的,我瀏覽了谷歌支持的庫的列表,但沒有看到在那裏,我得到編譯錯誤。我正在使用webapp2。至少現在我試圖遠離複雜的框架和包裝,因爲我首先需要了解事物的基礎,另外也因爲恕我直言,增加的複雜性,依賴性,維護等的成本通常會超過它的好處。但這只是我:)反正 - 我想更多的挖掘要求。 –

+0

+爲自動指針 –

1

this thread從身份工具箱論壇,您可以通過包括PyCrypto V2.6或更高版本使用Identity工具包在App Engine沙箱。

要做到這一點,添加以下到您的app.yaml文件:

libraries: 
- name: pycrypto 
    version: 2.6