1

長年の潜伏者、初めての質問者。コーヒーの消費量とタイピングの正確さの間には反比例の関係があるため、タイプミスがあればご容赦ください。

私がやろうとしているのは、ファンの Facebook ページ用の単純なアップローダ アプリケーションを作成することです。私が知っている唯一の言語であり、FB Dev でサポートされているので、Python で書くことにしました。

このアプリケーションの目標はかなり控えめです。

  1. ユーザーはボックスをクリックするだけで、ダイアログが開き、ハード ドライブ上のファイルを選択してクラウドにアップロードできるはずです (私はドロップボックスに落ち着きました。これについては後で詳しく説明します)。
  2. アップローダは、特定のファイル拡張子のみを受け入れる必要があります。
  3. ユーザーは、これらのファイルを参照してダウンロードできる必要があります。
  4. アプリケーションはフラッドの試みを検出できる必要があり、理想的な世界では、どの Facebook ユーザーがフラッドをアップロードしているかを検出できる必要があります。(この目標の後半がストレッチ ターゲットであることは、私のコーディング "スキル" に対する悲しい告発です)。
  5. ユーザーは、理想的には、ファイルをクラウドからクラウドへ、およびクラウドからディスクへ移動できる必要があります。これはそれほど重要ではありません。

よし、これで大作の目的を説明したので、指導のためにオーバーフローの神々に謙虚に近づく前に、自分がどこにいるのかをフォローアップします.

ということで、まずは Heroku にアカウントを作成し、そこでアプリケーションを作成しました。現時点では基本的にそこに座っており、コードはまったくありません。

この後、単純な Python ファイル アップローダーを Web で探し始めました。あちこち検索した後、DropBox 開発サイトでこのコードを見つけました。そこで、ドロップボックス SDK のサインアップを行い、このhttp://pypi.python.org/pypi/setuptoolsを介して「セットアップ ツール」をインストールする 必要がありました。 「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 をいじって、このすべてに役立つ可能性のあるアプリケーションがアプリケーションにあるかどうかを直接調べてみましたが、コード、ブラウザー、およびドロップボックス アプリはすべて互いに完全に無視しているようです。

もう一度多くの助けに感謝します。しばらくの間、いくつかの SQL に頭を悩ませるかもしれません。

4

2 に答える 2

2

セットアップ ツール スクリプトを次のように実行します。

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

これはそのエラーを処理する必要があります

ImportError: pkg_resources という名前のモジュールがありません

Heroku の無料パッケージにはこれらのファイルを保持するスペースがないため、残りの計画は機能するはずです。

理想的な世界は、どのFacebookユーザーがそれらをアップロードしているかを検出できることです

Facebook 認証フローhttp://developers.facebook.com/docs/authentication/を介して認証するだけで、現在のユーザーを

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

facepy のような Facebook Python ライブラリを使用

pip install facepy

それは次のように機能します

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

ここには、Dropbox のような Web ページへの認証などのロジックが欠けていますが、これが一般的な要点です。

これは Dropbox API の問題と Python setuptools の問題であるため、Facebook API チェックの段階ではないと思います。

于 2012-09-18T12:58:30.203 に答える
0

ErrorResponse: [401] u'Token is disabled or invalid' への応答は、私のコードで同じことを取得していました

Dropbox API から: トークンが承認されなくなった場合、REST API は HTTP エラー 401 Unauthorized 応答を返します。

生成されたリンクをコピーし、アプリを再度承認してコードを機能させました:)

于 2013-01-11T17:39:48.060 に答える