みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になります。
FMP19.6 Win10です。
再び「URLから挿入」についての質問です。
curl -X GET -H 'Content-Type: application/json' -H 'Accept: application/json' -H "Authorization: Bearer ACCESS_TOKEN" "https://app.XXX.com/public/API"
はWindowsのコマンドラインから実行できていて、サービス元サーバーからデータが取得できています。
ACCESS_TOKENは別スクリプトでサービス元から取得したaccess_tokenで、FMP内部のフィールドで保存してる変数です。
ここで上記をFMPの「URLから挿入」で実行しようとしていますがうまく動作できません。
設定は
変数$urlに "https://app.XXX.com/public/API"
変数$authに" "Authorization: Bearer "& ユーティリティ::access_token &" " "https://app.XXX.com/public/API" "
ターゲット に$$json
URLを指定 に$url
cURLは
"
-X GET
-S
-H "Content-Type: application/json"
-H "Accept: application/json"
-H @$auth
"
と設定しています。
エラーはHTMLで返ってきていて
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="/GenericError.htm?aspxerrorpath=/public/v1/Client">here</a>.</h2>
</body></html>
となっており、正しく送れていない感じです(すみませんこのあたり初心者で良く分かりません)
curlのFMPへの落とし込みに問題あるでしょうか?
アドバイス宜しくお願いします。
Offline
https://help.claris.com/ja/pro-help/con … tions.html
を見ると、-Hは変数構文を使えないようですが、どうですか。
https://help.claris.com/ja/pro-help/con … tions.html
を見ると、-Hは変数構文を使えないようですが、どうですか。
ちょっとそんな気もしていたのですが・・
じゃぁどうするか??が知りたいです。
従来のアプリケーションでのインプリを見てもaxiosでheaderにaccess_tokenを張り付けていますもんで
出来ないとなると困ってしまいます。
Offline
-H "Accept: application/json"
と同じように直接値を書けばいいのでは?
ACCESS_TOKENに"が含まれる場合が問題ですが...
と思って見直したら、
cURLは
"
-X GET
-S
-H "Content-Type: application/json"
-H "Accept: application/json"
-H @$auth
"
これは"の対応がおかしいですよね?
cURLは
""の中にある"はでエスケープする必要があるので
"
-X GET
-S
-H "Content-Type: application/json"
-H "Accept: application/json"
-H @$auth
"
となるはずでは?
変数が使えないのを直せば
"
-X GET
-S
-H "Content-Type: application/json"
-H "Accept: application/json"
-H "Authorization: Bearer ACCESS_TOKEN"
"
ですが
あ、あとトークンにが含まれてる場合もエスケープして\になります。
あらら、このサイトの仕様で(?)円マークを書いたのが消えてしまって意味不明な投稿になってしまった...
質問の文章もそうだったんですね...
そこを推測してもう一度見直すと、
変数$authに" "Authorization: Bearer "& ユーティリティ::access_token &" " "https://app.XXX.com/public/API" "
ここの最後のURL部分は不要です。(「URLを指定 に$url」 の方で指定している)
で、変数値が””で囲んだ文字列になってるなら、そのまま連結すればいいので
~~~~
-H " & $auth
でしょうね。
トークンに円や”が含まれる可能性があるなら、Substitute()で置換する必要があると思いますが、めんどうです。
”は円”円”に置換するのかな?円は円円円円?
あ、最初の投稿でcURLの中は全部エスケープしているのに投稿を見ると消えておりますね
$authをべた書きにしても結果は同じでした
-H "Authorization: Bearer XXXX"
と送らないとダメなのでXXXXを取得済みの変数にどこかで置き換えないといけないのですよね
Offline
XXXXと書いておいてSubstituteしてもいいですけど
いずれにしても、その文字列にどういう文字があるかで変わってきます。
改行は入ってないだろうから、変数は使わず
~~~
-H " & Quote("Authorization: Bearer " & ユーティリティ::access_token)
でうまくいくかなあ?
-H " & Quote("Authorization: Bearer " & ユーティリティ::access_token)
でうまくいくかなあ?
これ、ひょっとしてエスケープ入ってます?
GETする際にトークンをヘッダに載せて送るのは普通の所作だと思うのですが、みんなどうしているんでしょう?
Offline
エスケープはQuote関数にまかせているので、書いているとおりです。
コマンドラインではそのまま書いてるということなので、実際にはエスケープ必要な文字は無いわけでしょうけど
最初の発言でエラーメッセージが「/public/v1/Client」に移動したのでそっちにアクセスしろ、と言ってるようなんですが、URLは合ってるんですよね...
最初の発言でエラーメッセージが「/public/v1/Client」に移動したのでそっちにアクセスしろ、と言ってるようなんですが、URLは合ってるんですよね...
これHTMLのリンク踏んでもそんなとこには何もない!って怒られます。URLは合っています。が、念のためサービス元にも聞きます。
あと、私の理解が全然なのですが、-H " & Quote("Authorization: Bearer " & ユーティリティ::access_token)をそのまま入れるとQuioteの中の"はいつものように怒られます。
ハマってしまったので、Clarisにも質問投げました。
それと、動いているaccess_tokenを取得する部分のヘッダ設定にあるOrigin:https://originを外部の$origin参照にしてみたら動きませんでした。
やはり普通では-Hに変数を入れられないのか?tokenを送る別の手段があるのか?? 謎です
また自己レスです。
サービス元と話をしたら、こちらが使っていいアドレスと違うアドレスがドキュメントに載っていたことが分かり、修正したら
データを取得できました。
しかし、access_tokenをそのまま張り付けた形でのGETなので、変数として送れるようになるかは未解決です。
Offline
最終自己レスになります。
chatGPTに聞いてみたら
"--header "Authorization: Bearer " & Your_Table::Your_Access_Token_Field & """
とやれば行けるよ!!と回答が来たのでやってみたところ、出来ました!!!!!
himadaneeさん、ありがとうございました
Offline
Pages: 1
[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 591.07 KiB (Peak: 607.98 KiB) ]