ユーザーのマイドライブにファイルアップロード時、アップロード用URL取得命令で、ACCESS_DENIEDが返される

柳井康伸_531424

2024.06.15既読 121

こんにちは。初めて投稿する柳井と申します。

LINE WORKSのAPIのテストを始めて約1週間程度の初心者です。

やりたい事は、ファイルのマイドライブへのアップロードです。

ログインidを使わずmeを指定した場合、うまくアップロードできるのですが、

ログインidを使ってアップロード用URLを取得する命令を出すと、以下の応答が返されます。

Response status code: 403
Response text: {"code":"ACCESS_DENIED","description":"Access is denied."}
コードの関連する部分は以下の通りです。
ログインidは間違いない事を確認しています。
何方かこの問題の解決方法をご教示いただけないでしょうか?​
resource_url = 'https://www.worksapis.com/v1.0/users/{user_id}/drive/files'  # ルートフォルダにファイルをアップロードするためのURL​

headers = {
'Authorization': f'Bearer {access_token}',
'Content-Type': 'application/json; charset=UTF-8'
}
upload_url = generate_upload_url(headers, user_email, file_to_upload)
def generate_upload_url(headers, user_id, file_path):
encoded_user_id = quote(user_id) # ユーザーIDURLエンコードする
url = resource_url.format(user_id=encoded_user_id)
print(f"Generating upload URL from: {url}") # デバッグ文
print(f"Headers: {headers}") # デバッグ文

request_body = {
"fileName": os.path.basename(file_path),
"fileSize": file_size,
"overwrite": True
}

response = requests.post(url, headers=headers, json=request_body)
print(f"Response status code: {response.status_code}") # デバッグ文
print(f"Response text: {response.text}") # デバッグ文
if response.status_code == 200:
return response.json().get('uploadUrl')
else:
print(f"Failed to generate upload URL. Status code: {response.status_code}")
print(f"Response content: {response.content}")
return None


コメント1

  • 업데이트 된 답글입니다.

    柳井康伸_531424 投稿者

    この件解決しました。
    まだ不慣れなのですが、このプログラムを実行する時にプログラム内で使用していたユーザーIDとは異なるユーザーIDでブラウザ上でログインしていました。
    同じログインIDを使う事でこの問題は起きなくなりました。
    お騒がせしてすいません。

    2024.06.19

    1
前の投稿 Calendar API における 会社カレンダー について
次の投稿# APIエンドポイントのAPIIDを教えてください。
リスト

まだ、解決できませんか?
今すぐ実際に使用しているLINE WORKSユーザーに質問してみましょう。