バージョン選択

フォーラム

メニュー

オンライン状況

48 人のユーザが現在オンラインです。 (40 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 48
もっと...

サイト内検索

プラグイン > 開発について > EC-CUBE API で認証が必要な情報にアクセスで、ログイン画面が表示するのはなぜ?

開発について

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
tomoki
投稿日時: 2017/11/27 16:57
対応状況: 開発中
新米
登録日: 2017/11/27
居住地:
投稿: 1
EC-CUBE API で認証が必要な情報にアクセスで、ログイン画面が表示するのはなぜ?
▼テンプレート
[EC-CUBE] EC-CUBE3.13、新規インストール
[レンタルサーバ] 自社サーバー
[OS] Windows 10
[PHP] PHP 7.1
[データベース] MySQL 5.7
[WEBサーバ] Apache2.4.6
[ブラウザ] Chrome
[導入プラグインの有無] 無
[カスタマイズの有無] ルート変更
[現象] EC-CUBE APIを使用時に、認証が必要な情報にアクセスしたときにログイン画面が表示する。


はじめまして。
今月よりEC-CUBEの開発に入っております。
PHP言語はほぼ未経験、C# APS.NETを6年の経験があります。

Web API認証 ( Authorization ) ガイドのページ
http://doc.ec-cube.net/api_authorization
とswaggerを読みながら取り組んでいます。


[困っていること]
EC-CUBE APIの開発で、認証が必要な情報を取得したいが、
「1. Authorization code の取得」時にログイン画面が出るのはなぜ?
(ログイン画面が出るため、code を取得できない)


[当方がやっていること]

1.swagger画面で[Authorize]ボタンを押し、取得したい情報を(ここではorder_read)を
選択し[Authorize]ボタンを押してアクセス権を付与する

2.swagger画面で「 /shopmanage/OAuth2/v0/authoriz」(POST・GET)の両方で
 「実際に実行!」ボタンを押す。
 ⇒レスポンスコードは「200」と表示
 ⇒レスポンスボディはHTMLタグで表記しており、「このアプリ連携を許可しますか?」と記載しており
  受注(参照)に対し、アクセス権を要求をするかアナウンスするようになっています
 ⇒レスポンスヘッダは以下に記載致します
  --ここから--
{
"date": "Mon, 27 Nov 2017 07:58:23 GMT",
"server": "Apache/2.4.6 (CentOS)",
"vary": "Authorization",
"cache-control": "no-cache",
"access-control-allow-origin": "*",
"access-control-allow-methods": "GET,POST,PUT,DELETE,OPTIONS",
"access-control-allow-headers": "Origin, X-Requested-With, Content-Type, Accept, Authorization",
"keep-alive": "timeout=5, max=100",
"connection": "Keep-Alive",
"transfer-encoding": "chunked",
"content-type": "text/html; charset=UTF-8"
}
  --ここまで--

3.2で表記している「Curl」のコマンドを実行するとログイン画面のHTMLが表示してしまう。



[当方が今回、望んでいること]
「当方がやっていること」の3番を実行時に、Authorization code の取得をしたいです。


[当方が達成したいこと]
β版 であることは承知の上で、
EC-CUBE API プラグインを使い、Curlコマンドで、取得したい情報(order_read)を取得したい。

Web API認証 ( Authorization ) ガイドのページだと、Authorization code の取得する際、
URL にブラウザでアクセスする手法を記載しているが、PHPプログラムで実装するのが
想像できないので、POSTまたはGETを使い取得したいです。

どうぞよろしくお願いいたします。




468
投稿日時: 2017/11/28 11:31
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: EC-CUBE API で認証が必要な情報にアクセスで、ログイン画面が表示するのはなぜ?
ログイン画面が表示されるのは仕様のように思います。

Authorization codeの取得時には、
ログイン画面でログインした後、
表示される「このアプリ連携を許可しますか?」の画面で「許可する」をクリックするアクションを必ず行う必要があるように思われます。
また、Authorization codeは「許可する」をクリックした後のリダイレクトURLの中に含まれるようですので(レスポンスで返ってくるわけではない)
個人的な感想なのですが、
Curlコマンドだけで完結させるのは無理なのではないでしょうか?

対応するには、プラグインに手を加える必要があると思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

nanasess
投稿日時: 2017/11/28 11:47
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2303
Re: EC-CUBE API で認証が必要な情報にアクセスで、ログイン画面が表示するのはなぜ?
Order の情報は、未ログイン状態で閲覧できてはならない情報ですので、必ずログイン認証が必要です。

ブラウザでログイン画面を経由せずに認証する方法(Basic 認証や JWT Bearer 認証)は未実装です。
https://github.com/EC-CUBE/eccube-api/issues/29

今のところ、初回は必ずブラウザでログイン画面を経由して認証していただく必要があります。

ちなみに、 redirect_uri に urn:ietf:wg:oauth:2.0:oob を指定しておくとブラウザの画面に Authorization code が表示されますので、コマンドラインなどでも実装しやすいと思います。
http://doc.ec-cube.net/api_authorization#redirect_uri-の指定

Authorization code さえ取得できれば、以下のステップを踏むことで curl のみで order の情報を取得可能です。

1. http://doc.ec-cube.net/api_authorization#2-アクセストークンの取得
2. http://doc.ec-cube.net/api_authorization#4-apiアクセス

APIアクセスする際には Authorization: Bearer <access token> ヘッダが必要です。
Swagger に表示される curl コードには含まれていませんので、上記 API アクセスの項を参考にしてください。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,289名です
総投稿数は109,689件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.