2012-09-18 34 views
1

長時間的潛伏者,第一次問askerer。請原諒任何錯別字,因爲我在消費咖啡和打字準確度之間有反比關係。試圖建立簡單的文件上傳Facebook的應用程序

我想要做的是創建一個簡單的上傳應用程序的粉絲facebook頁面。我決定用Python編寫它,因爲它是我知道的唯一語言,並且得到了FB Dev的支持。

此應用程序的目標是相當適度的:

  1. 用戶應該能夠簡單地點擊一個框,將打開一個對話框來選擇他們的硬盤驅動器上的文件,並將其上傳到雲端(我已經落戶保管箱,更多關於這個)
  2. 上傳者應該只接受特定的文件擴展名。
  3. 用戶應該能夠瀏覽並能夠下載所述文件。
  4. 應用程序應該能夠檢測到洪水的嘗試,並在理想的世界能夠檢測到哪些Facebook用戶正在上傳他們。 (這是對我的編碼「技能」的一個可悲的控訴,這個目標的後半部分是一個伸展目標)。
  5. 用戶應該能夠理想地將文件雲遷移到雲,以及將雲遷移到磁盤。這並不重要。

好吧,現在我已經制定了我的大作品的目標,我會跟着我在哪裏,在謙卑接近溢出神指導之前。

因此,首先我在Heroku上創建了一個帳戶,並在那裏創建了應用程序。它現在基本上就坐在那裏,沒有任何代碼。

在此之後,我開始瀏覽簡單的Python文件上傳器。經過搜索後,我在DropBox開發站點上找到了這個代碼。所以我通過了一個Dropbox SDK的註冊,並且必須通過這個http://pypi.python.org/pypi/setuptools 來安裝「setup tools」,我使用了ez_setup.py,並且簡單地運行了那個似乎通過「setuptools模塊」找不到錯誤的那個。

我已經張貼下面的代碼。

# Include the Dropbox SDK libraries 
from dropbox import client, rest, session 

# Get your app key and secret from the Dropbox developer website 
APP_KEY = 'xxxxxetc.' 
APP_SECRET = 'xxxxxetc.' 

# ACCESS_TYPE should be 'dropbox' or 'app_folder' as configured for your app 
ACCESS_TYPE = 'dropbox' 

sess = session.DropboxSession(APP_KEY, APP_SECRET, ACCESS_TYPE) 

request_token = sess.obtain_request_token() 

# Make the user sign in and authorize this token 
url = sess.build_authorize_url(request_token) 
print "url:", url 
print "Please authorize in the browser. After you're done, press enter." 
raw_input() 

# This will fail if the user didn't visit the above URL and hit 'Allow' 
access_token = sess.obtain_access_token(request_token) 

client = client.DropboxClient(sess) 
print "linked account:", client.account_info() 

f = open('working-draft.txt') 
response = client.put_file('/magnum-opus.txt', f) 
print "uploaded:", response 

folder_metadata = client.metadata('/') 
print "metadata:", folder_metadata 

f, metadata = client.get_file_and_metadata('/magnum-opus.txt',rev='362e2029684fe') 
out = open('magnum-opus.txt', 'w') 
out.write(f.read()) 
print(metadata) 

此後我在錯誤

Traceback (most recent call last): 
    File "F:/Python27/FAUploader (Roaring-gorge)/Roaringgorge101", line 2, in <module> 
    from dropbox import client, rest, session 
    File "F:\Python27\dropbox\__init__.py", line 3, in <module> 
    from . import client, rest, session 
    File "F:\Python27\dropbox\client.py", line 52, in <module> 
    from .rest import ErrorResponse, RESTClient 
    File "F:\Python27\dropbox\rest.py", line 8, in <module> 
    import pkg_resources 
ImportError: No module named pkg_resources 

我開始得到一點點擔心,這可能會在錯誤的方向&行進到達一世在編碼方面不是很好,甚至在尋求幫助時更差。所以我現在只是在我花太長時間試着讓我的問題太完美之前發佈這個。我真的在學習編碼,如果你們能夠幫助我朝着正確的方向發展,那將不勝感激。看起來每個人,即使是經驗不多的人,都能夠比我更快地完成這類項目。

這些都是我一直在使用的參考資料/網站,我訪問過

https://www.dropbox.com/developers

我不允許張貼多個超鏈接,因爲我太小白,很明顯。 '-_-

無論如何我離題了,任何幫助將不勝感激。

編輯/進展報告

所以我設法更新Python的環境,讓過去在上面的職位描述的錯誤。不過,我只能成功地獲得一個令我更加困惑的新人。

Traceback (most recent call last): 
    File "F:\Python27\FAUploader (Roaring-gorge)\Roaringgorge101", line 22, in <module> 
    access_token = sess.obtain_access_token(request_token) 
    File "build\bdist.win-amd64\egg\dropbox\session.py", line 205, in obtain_access_token 
    response = self.rest_client.POST(url, headers=headers, params=params, raw_response=True) 
    File "build\bdist.win-amd64\egg\dropbox\rest.py", line 260, in POST 
    return cls.IMPL.POST(*n, **kw) 
    File "build\bdist.win-amd64\egg\dropbox\rest.py", line 207, in POST 
    post_params=params, headers=headers, raw_response=raw_response) 
    File "build\bdist.win-amd64\egg\dropbox\rest.py", line 183, in request 
    raise ErrorResponse(r) 
ErrorResponse: [401] u'Token is disabled or invalid' 
>>> 

我試圖與DropBox的,如果有在可能幫助我的所有應用什麼,直接看到周圍碴,但代碼,我的瀏覽器,Dropbox的應用程序似乎都完全忽略對方。

再次很多幫助表示讚賞。我想我可能會在一段時間內對我的頭撞一些SQL。

+0

當人們意識到咖啡消耗與打字能力之間的反比關係時,應該仔細地按照咖啡量的比例來仔細校對自己的帖子消耗。 –

+0

你應該知道你的帖子太長了99.9%的讀者 – wroniasty

+1

@wroniasty:他的帖子很長,但它會幫助他得到一個很好的答案。有些問題非常具體,需要回答一些背景。它有介紹,明確的要求和OP自己的考慮和研究努力。我認爲這是關於SO的一個很好的第一個問題。 –

回答

2

執行安裝工具,腳本如下

curl http://python-distribute.org/distribute_setup.py | python 

這應該採取錯誤的護理

ImportError: No module named pkg_resources

計劃的其餘部分聽起來像它應該工作作爲Heroku的免費包止跌」 t有空間容納這些文件

an ideal world be able to detect which facebook user is uploading them

通過Facebook認證只是驗證流動http://developers.facebook.com/docs/authentication/,然後你就可以登錄當前用戶具有

https://graph.facebook.com/me?access_token=xxx 

與Facebook Python庫一樣facepy

pip install facepy 

它就像

from facepy import GraphAPI 
graph = GraphAPI('your_access_token_goes_here') 
graph.get('me') 

有邏輯在這裏失蹤,比如像Dropbox這樣的網頁的認證,但這是一般的要點。

所以,一切看起來不錯,到目前爲止,我不認爲你是在現在的Facebook API檢查的階段,因爲這是一個Dropbox的API問題和Python setuptools的問題

+0

http://pastebin.com/Nw5HbgS3 – Anaryl

+0

嘿哎呀粘貼沒有上下文,對不起,不知道這是怎麼發生的,waywayrd也許進入。 所以我按照你所描述的更新了python環境,也出去了,並且得到了virtualenv&pip,但現在它拋出了上面pastebin中描述的錯誤。我還應該更新OP來反映進展情況或評論,比如論壇? – Anaryl

0

響應錯誤響應:[401]ù 「令牌被禁用或無效」居然也得到了同樣的事情在我的代碼

從Dropbox的API: 的情況下令牌不再被授權,則REST API將返回一個HTTP錯誤401未經授權響應

我複製了生成d鏈接並再次授權該應用程序讓我的代碼正常工作:)

相關問題