LINE WORKS API 2.0 User Account認証 (OAuth)のUNAUTHORIZED認証エラーについて

きむ

2022.04.27既読 3515

LINE WORKS API 2.0のUser Account認証 (OAuth)でローカルのクライアントPC(PHP Laravel Guzzle ウェブアプリケーション)よりAuthorization Codo取得のためにLINEWOKSアカウントでログイン認証を行って、redirectでAccess Tokenを発行しました。利用するscopeはread以外すべて追加しました。
次にTalend APIやクライアントPCで
headers => [
Authorization' => 'Bearer '.{AccessToken},
           ]
を実行するのですが、
`401 Unauthorized` response: {"code":"UNAUTHORIZED","description":"Authentication failed"}
と認証エラーとなってしまいます。
Oauth2.0自体もあまり取り扱ったことがないため今回ご質問させていただきました。よろしくお願いいたします。

コメント2

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

    佐藤正宗

    Access Tokenは取得できているんですよね?
    PHPは専門ではないのですが、Headerへのセットのところの記述が怪しそうです。
    Postmanで生成したサンプルコードで良ければ張り付けておきますのでご参考になれば。

    <?php
    $client = new http\Client;
    $request = new http\Client\Request;
    $request->setRequestUrl('https://www.worksapis.com/v1.0/users/me/calendar');
    $request->setRequestMethod('GET');
    $request->setOptions(array());
    $request->setHeaders(array(
     'Accept' => 'application/json',
     'Authorization' => 'Bearer jp1AAAA60zYqK0P4SQ8ItHnOJwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx+gQ=='
    ));
    $client->enqueue($request)->send();
    $response = $client->getResponse();
    echo $response->getBody();

    2022.04.27

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

    きむ 投稿者

    サンプルありがとうございます!
    サンプルコードを参照に認証を行ってみたのですが同じくエラーが発生しおかしいと思い、AccessTokenを疑いAccessTokenを以下のように取得するようにしたところ認証されるようになりました。
    コメントいただきありがとうございました。

    Route::get('/callback', function (Request $request) {

    $http = new GuzzleHttp\Client;

    $response = $http->post('https://auth.worksmobile.com/oauth2/v2.0/token', [
       "headers" => [
           "Content-Type" => "application/x-www-form-urlencoded",
       ],
       'form_params' => [
           'grant_type' => 'authorization_code',
           'client_id' => 'XXXXXXXXXXXXXXXXXXXXXXX',
           'client_secret' => 'xxxxxxxxxx',
           'redirect_uri' => 'http://localhost/callback',
           'code' => request()->code,
       ],
    ]);

    // 最初こちらでaccessTokenを取得してましたが認証エラー
    // return json_decode((string) $response->getBody(), true); //

    // 下記でaccessToken取得したコードで試したところステータスコード200となりました
    $body = $response->getBody();
    $body = json_decode($body);
    dd($body);

    2022.04.27

    1
前の投稿 複数の識別子の提供について
次の投稿ドキュメントと動作の差異 ファイルアップロード / ダウンロード
リスト

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