初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2023-02-11 10:00:05

wook
Member

「URLから挿入」cURLオプションの使用方法

お世話になります。FMP19.6 Windows10です。

「URLから挿入」を使ってOAuth2のaccess_tokenを取得したいのですが、うまく動作しません
指定URLに
"https://auth.xxx.net/oauth2/token"
を入れて
cURLオプションの指定で
"
-X POST
-H \"Origin: https://mydomain\"
-H \"Content-Type: application/x-www-form-urlencoded;charset=UTF-8\"
-d \"grant_type=password\"
-d \"username=@ユーティリティ::myname&password=@ユーティリティ::mypass\"
"
としていますが
{"error":"invalid_grant","error_description":"The user name or password is incorrect"}
が返ってきています。
mynameとmypassは正しく入っています
ターゲットは$$jsonとしています

アドバイス宜しくお願いします

Offline

#2 2023-02-11 12:44:22

やまほん
Member

Re: 「URLから挿入」cURLオプションの使用方法

> -d \"username=@ユーティリティ::myname&password=@ユーティリティ::mypass\"
ここの行ですが、フィールド名がそのまま文字列になっちゃってるので
-d \"username=@" & ユーティリティ::myname & "&password=@" & ユーティリティ::mypass & "\"
とかじゃないですかね。

Offline

#3 2023-02-11 13:59:22

wook1613
Guest

Re: 「URLから挿入」cURLオプションの使用方法

やまほんさん、

フィールド名は"& &"の間に書くに従って

-d \"username="&@ユーティリティ::myname&"&password="&@ユーティリティ::mypass&" \"

にしてみましたが、変わらないです。テーブル名の頭に@が付いていて紛らわしいですが@ユーティリティというテーブルです。

#4 2023-02-11 15:42:14

Shin
Member

Re: 「URLから挿入」cURLオプションの使用方法

-d \"username=\"&@ユーティリティ::myname&\"&password=\"&@ユーティリティ::mypass&\"
がいいのでは。
@ が邪魔している可能性も。
あらかじめ、変数に
"username=" & @ユーティリティ::myname & "&password=" & @ユーティリティ::mypass
を設定しておき、それをつかってみればいかがでしょう、

Offline

#5 2023-02-11 16:15:24

wook1613
Guest

Re: 「URLから挿入」cURLオプションの使用方法

Shin wrote:

-d \"username=\"&@ユーティリティ::myname&\"&password=\"&@ユーティリティ::mypass&\"
がいいのでは。
@ が邪魔している可能性も。

Shinさん、
ご指南に従って修正したら
{"error":"invalid_grant","error_description":"The user name or password is incorrect"}
と出ていたエラーが消えて、HTMLが返ってきました。

ちょっと返ってきたデータが正しいのか今のところ分からないのですが、FMPで発生していた送信エラー自体は無くなって
通信ができているようです。
戻ってきているHTMLにはruntime errorが出ているのですが・・
(並行してcurlの戻り値についてendpoint元に問い合わせ中なので月曜以降にレポートします)

#6 2023-02-11 21:23:52

himadanee
Guest

Re: 「URLから挿入」cURLオプションの使用方法

-d \"username=\""&@ユーティリティ::myname&"\"&password=\""&@ユーティリティ::mypass&"\"
じゃないとフィールド値が展開されないので変では?

しかし、これでも"の対応がおかしい気がしますね。usernameなどをクオートする必要あるんですか?-Hの方はスペースが入ってるので必要ですが...

データのエンコードは必要ないんでしょうか。

#7 2023-02-12 09:43:44

wook1613
Guest

Re: 「URLから挿入」cURLオプションの使用方法

himadaneeさん、

試しに、下記のようにフィールド参照をしないでusernameとpassを直に入れてみると
-d \"username=MyNAME&password=MyPASS\"

元々のとは少し違う
{"error":"invalid_grant","error_description":"User is not allowed on this domain"}
が戻ります。

FMPの問題ではないのかもしれませんが、この辺りめちゃくちゃ初心者なので手探り状態です

#8 2023-02-12 10:44:54

qb_dp
Member

Re: 「URLから挿入」cURLオプションの使用方法

OAuth 2.0 での access_token の取得方法は、認可サーバー依存なので、どこのサービスかが分からなければ正しい返答が得られないでしょう。

Offline

#9 2023-02-12 10:50:19

wook1613
Guest

Re: 「URLから挿入」cURLオプションの使用方法

qb_dpさん、

qb_dp wrote:

OAuth 2.0 での access_token の取得方法は、認可サーバー依存なので、どこのサービスかが分からなければ正しい返答が得られないでしょう。

まさに今サービス元(ヨーロッパ)に問い合わせ中で回答が月曜の予定です。
因みに、取得方法自体はサービス元の指示通りです。

#10 2023-02-12 10:53:49

himadanee
Guest

Re: 「URLから挿入」cURLオプションの使用方法

Content-Type: application/x-www-form-urlencoded;
という指定をしてるので、MyNAMEなどにエンコードが必要な文字が入ってるかどうかにもよりますが、
スペースだけなら%20に置換しておけば、-dの方はクオートいらない気がしますが...
https://help.claris.com/ja/pro-help/con … s.html#tn4
の下の方の例を見てください。
"--user myusername:mypassword --data fname=Bob&lname=Smith"
というふうに、--userや--dataの値はクオートしてません。してはいけないってこともないですが、、、
データ自体に"が含まれてるとどうとかややこしくなるので、値は変数に入れておくのがお勧めです。
"--user myusername:mypassword -d @$post_data"

#11 2023-02-12 11:30:44

wook1613
Guest

Re: 「URLから挿入」cURLオプションの使用方法

himadaneeさん、

サービス元とのメールやり取りの中で
-d "username=USERNAME&passwrd=PASSWORD&grant_type=password"
と書きなさいと指示が来ていたので従ってはいるのですが、FMPに組み込む以前にcurlの動作が
サービス元と色々違っていたりしてトラブっているわけです。
本来この問題解決後にFMPで検証する予定でしたが、「URLから挿入」自体初めて使う機能なので
同時にやってみています。

#12 2023-02-12 12:40:56

Shin
Member

Re: 「URLから挿入」cURLオプションの使用方法

username=USERNAME&passwrd=PASSWORD&grant_type=password
という文字列を変数に設定しておき、それを参照するのが後々らくなのでは。

Offline

#13 2023-02-12 13:00:56

wook1613
Guest

Re: 「URLから挿入」cURLオプションの使用方法

Shinさん、

Shin wrote:

username=USERNAME&passwrd=PASSWORD&grant_type=password
という文字列を変数に設定しておき、それを参照するのが後々らくなのでは。

はい、私もそう思いました。修正してサービス元からの解決を待ちたいと思います

#14 2023-02-12 13:20:44

himadanee
Guest

Re: 「URLから挿入」cURLオプションの使用方法

USERNAMEの方はあんまりないかもしれませんが、PASSWORDは記号を使ってるとエンコードが必要かも。(GetAsURLEncoded)

#15 2023-02-12 13:45:31

wook1613
Guest

Re: 「URLから挿入」cURLオプションの使用方法

実は、ここのサービス元とのOauth2通信についてはPower Queryでうまくできています。
Power Queryの詳細エディタにはusernameやpasswordをプレーンテキストで記載していますが、それがどうエンコードされて
送られているかとかが良く分かっていません(単に知識不足ですが・・)。
FMPにデータを持ってきたり相手先を書き換えたりする必要からまずはcurlでやってみようとして躓いております

#16 2023-02-12 15:25:04

wook1613
Guest

Re: 「URLから挿入」cURLオプションの使用方法

Power Queryでは
headerにOriginとContent-Typeを設定
postDataに配列[grant_type="password",timezone="Asia/Tokyo",username="USERNAME",password="PASSWORD", ]を設定し
指定したurl("https://auth.xxx.net/oauth2/token")にheaderとpostDataを送りますが、その際postDataは
Text.ToBinary(Uri.BuildQueryString(postData))
でバイナリ変換されてからurlへcontentsとして送られていることがわかりました。
これをFMP実装するとなるとpostDataをバイナリ変換するにはどうすれば良いでしょうか?

#17 2023-02-12 21:27:01

himadanee
Guest

Re: 「URLから挿入」cURLオプションの使用方法

バイナリ変換は必要ないと思います。(UTF-8に自動変換)
と思ってたんですが、ヘルプ(https://help.claris.com/ja/pro-help/content/curl-options.html#tn4)を見たら
--FM-text-encoding
というオプションがありました。
「このオプションの直後に続くオプションに含まれるテキストを、FileMaker の内部文字エンコードから指定のエンコードに変換します。TextEncode 関数の encoding 引数に定義した名前のいずれかを使用します。」
これを使わないとUTF-16で送ってしまうのかな?

急にtimezoneが増えましたが、そのデータはエンコードが必要な文字を含んでます。

変数を設定で
"timezone=" & GetAsURLEncoded ( "Asia/Tokyo" )
などとやって、それを指定したらいいでしょう。

#18 2023-02-13 18:53:11

wook1613
Guest

Re: 「URLから挿入」cURLオプションの使用方法

自己レスです。
サービス元から指示されたパラメータの一部(内容)に誤りがあったことがサービス元からの連絡で分かり修正したところ
コマンドラインからのcurlと「URLから挿入」両方で無事access_tokenが取得できました。

$postDataの内容は
"username=USERNAME&password=PASSWORD&grant_type=password"
という単純なものでOKでした。

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.010 seconds, 14 queries executed - Memory usage: 557.98 KiB (Peak: 578.89 KiB) ]