2016-08-26 3 views
0

これが可能なら誰でも知っていますか? ビジネスアカウントのために私のonedriveにいくつかのドキュメントをドロップすることを自動化したいだけです。python3ファイルをondriveまたはsharepointにアップロードしますか?

私はAPPを登録し、秘密とidを持っ

   import onedrivesdk 
       from onedrivesdk.helpers import GetAuthCodeServer 
       from onedrivesdk.helpers.resource_discovery import ResourceDiscoveryRequest 

      redirect_uri = 'http://localhost:8080' 
      client_id = 'appid' 
      client_secret = 'mysecret' 
      discovery_uri = 'https://api.office.com/discovery/' 
      auth_server_url='https://login.live.com/oauth20_authorize.srf?scope=wl.skydrive_update' 
      #auth_server_url='https://login.microsoftonline.com/common/oauth2/authorize', 
      auth_token_url='https://login.microsoftonline.com/common/oauth2/token' 

      http = onedrivesdk.HttpProvider() 
      auth = onedrivesdk.AuthProvider(http, 
              client_id, 
              auth_server_url=auth_server_url, 
              auth_token_url=auth_token_url) 
      auth_url = auth.get_auth_url(redirect_uri) 
      code = GetAuthCodeServer.get_auth_code(auth_url, redirect_uri) 
      auth.authenticate(code, redirect_uri, client_secret, resource=resource) 
      # If you have access to more than one service, you'll need to decide 
      # which ServiceInfo to use instead of just using the first one, as below. 
      service_info = ResourceDiscoveryRequest().get_service_info(auth.access_token)[0] 
      auth.redeem_refresh_token(service_info.service_resource_id) 
      client = onedrivesdk.OneDriveClient(service_info.service_resource_id + '/_api/v2.0/', auth, http) 

を試してみました。しかし、私がこれを走らせたとき、スコープには無効なエラーがあります。さらに、コマンドラインの環境にはあまり適していないWebページを起動しようとします。私は、このSDKはもともとこのスクリプトはlogin.microsoftonlineを持っていたので、このSDKは時代遅れかもしれないと思うが、それは到達できないのでlogin.live.comに変更した。

答えて

0

私はあなたが投稿したこのサンプルコードを書いています。 auth_server_URLは、OneDrive(コンシューマ製品)にアクセスするためにのみ使用できるMicrosoft Account認証の認証URLに置き換えられました。 OneDrive for Businessアカウントにログインするには、URL login.microsoftonline.comを引き続き使用する必要があります。

これは、ダイアログがポップアップするということは間違いありません。しかし、少しサポートコードを書くことができますので、初めて特定のアプリにログインするときにのみ発生します。次の手順に従います(あなたがAuthProviderのデフォルトの実装を使用していると仮定すると:

  1. AuthProviderは、現在のユーザーの資格情報をキャッシュSessionオブジェクトを持つことになります回線を介してアップauth.redeem_refresh_token()
  2. 上記のサンプルコードを使用しますおよびセッション。後で資格情報を保存するAuthProvider.save_session()を使用してください。
  3. 次回アプリを起動し、前のセッションを取得し、認証トークンをリフレッシュしAuthProvider.load_session()AuthProvider.refresh_token()を使用しています。これは、すべてのレスになります。

SessionBasefound here)の既定の実装ではPickleが使用されており、製品の使用には安全ではありません。このアプリを他のユーザーに展開する場合は、Sessionの新しい実装を作成してください。

+0

「このページを表示することができない」だから、企業のために働くことになっていますアカウントも?コードはこの行に刻まれ、永遠にここにとどまっています: 「>>> auth_url = auth.get_auth_url(redirect_uri)」 私はMac上でシークレットとapp id変数を除いて元のコードを使用していますpython 2.7 –

+0

私の悪い、私は、コードは 'code = GetAuthCodeServer.get_auth_code(auth_url、redirect_uri)'、次の行で停止することをお詫びします –

0

Oneriveのウェブサイトでは、サンプルコードはどちらか私のために動作しませんでしたgithubのは、それが認証のウィンドウがポップアップしてみました https://dev.onedrive.com/SDKs.htm

「Python用OneDrive SDK」を「ビジネスのためのOneDrive」に「未」を示します

http://( 'https // login.microsoftonline.com/common/oauth2/authorize')?redirect_uri = http%3A%2F%2Flocalhost%3A8080 & client_id = 034xxxx9-9xx8-4xxf-bexx-1bc5xxxxbd0c & response_type = code

またはクライアントIDの「 - 」をすべて削除した

http://( 'https // login.microsoftonline.com/common/oauth2/authorize')?redirect_uri = http%3A%2F%2Flocalhost%3A8080 &のclient_id = 034xxxx99xx84xxfbexx1bc5xxxxbd0c & response_type =コード

いずれかの方法、私は同じ結果を得た、IEはラインとポップアップが表示されませんでした

関連する問題