12

Pythonを使用してGoogleAnalyticsAPIにクエリを実行し、Analyticsアカウントから定期的にデータをダウンロードして、ローカルデータベースにデータを保存したいと思います。私は基本的に、基本的なチュートリアルで与えられた手順に従っています。このプロセスでは、Python用のGoogleクライアントAPIライブラリを使用しています。

ローカルの開発マシン(Mac)でスクリプトを実行しているとき、これまでのところスクリプトは正常に機能しています。スクリプトを開始すると、ブラウザーが開き、アプリからAnalyticsデータへのアクセスを許可するように求められます。その後、スクリプトを何度でも実行して、データにアクセスできます。

サーバー(Ubuntu、利用可能な端末のみ)でw3mブラウザーが開きますが、そこからGoogleアカウントにアクセスできません。w3mプログラムを終了して強制終了するには、を使用する必要がありCtrl-Cます。次のようなエラーメッセージがあります。

あなたのブラウザは訪問するために開かれました:

https://accounts.google.com/o/oauth2/auth?scope=some_long_url&access_type=offline

ブラウザが別のマシン上にある場合は、コマンドラインパラメータを使用してこのアプリケーションを終了して再実行します

--noauth_local_webserver

ただし、パラメータを使用してスクリプトを実行すると--noauth_local_webserver、同じ結果が得られます-w3m開いて認証できません。

どうすれば動作させることができ--noauth_local_webserverますか?同じマシン上でローカルブラウザなしで認証する別の方法はありますか?

4

4 に答える 4

7

を使用する場合はFLAGS = gflags.FLAGS、実際にコマンドライン引数をに渡す必要がありますFLAGS(これにより、私もつまずいた場合とそうでない場合があります:))。それを行う方法の分析中心の例については、ここを参照してください(リンクはしばらくすると消える傾向があるため、以下のコードを参照してください)。一般的な考え方は、argv引数が変数に渡され、FLAGS他のモジュールで使用できるようになるというものです。

# From samples/analytics/sample_utils.py in the google-api-python-client source

def process_flags(argv):
  """Uses the command-line flags to set the logging level.

  Args:
    argv: List of command line arguments passed to the python script.
  """

  # Let the gflags module process the command-line arguments.
  try:
    argv = FLAGS(argv)
  except gflags.FlagsError, e:
    print '%s\nUsage: %s ARGS\n%s' % (e, argv[0], FLAGS)
    sys.exit(1)

  # Set the logging according to the command-line flag.
  logging.getLogger().setLevel(getattr(logging, FLAGS.logging_level))

また、私たちだけではないことがわかりました!このバグを追跡して、ドキュメントがいつ追加されるかを確認できます。

于 2012-10-18T14:00:00.330 に答える
1

GAをサービスAPIとして使用することもできます:https ://developers.google.com/analytics/devguides/reporting/core/v3/quickstart/service-py これは完全に正常に機能します。openssl $ openssl pkcs12 -in client_secrets.p12 -nodes -nocerts> client_secrets.pemを使用して、p12を暗号化されていないPEMファイルに変換することを忘れないでください。Google開発者のコ​​ンソールからP12をダウンロードすると、インポートパスワードが出力されます。

于 2015-06-19T18:31:17.237 に答える
0

私は同じ問題に遭遇し、サーバーにSSHで接続することで問題を解決することができました。例:

ssh -L 8080:127.0.0.1:8080 <server-name>

次に、SSHを介してスクリプトを実行しました。URL(https://accounts.google.com/o/oauth2/auth?scope=some_long_url&access_type=offline)が表示されたら、マシンのブラウザーにコピーして貼り付け、認証フローを完了しました。

于 2016-04-18T07:20:35.833 に答える
0

私はそれを自分のPCで実行し、token.jsonを取得し、サーバーのホームフォルダー(スクリプトの作業ディレクトリを考えてください)にトークンをコピーしただけで、問題は解決しました。同じトークンを使用する場合、認証は必要ありません

于 2021-09-21T13:40:18.440 に答える