投稿日:2022-11-23 Wed
最近ブログを更新してないので大分間があいてしまいました。さて本日の話題は、Cloud Functionsで作ったAPIへUnityでアクセスしてみたら、permissionエラーになってしまったというお話。
Unityで何回アクセスしても「ProtocolError」になってしまう。他のAPIは問題なし。
もう5年くらいは、CloudFunctionsのお世話になってる訳なのですが、初体験です。
試しにURLをブラウザ上で直接叩いてみましたが、他のAPIは「BadRequest」と表示されOK!。色々セキュリティプログラムがが入ってるので、ちゃんとプログラムを通ってます。
でも新しく作ったAPIは、「Error: Forbidden Your client does not have permission to get URL /作ったAPI from this server.」と表示されている。
明らかに挙動が違います。
ひょっとするとCloud Functionsをデプロイし直せば動くようになるかもしれませんが、Googleコンソールで修正したのでメモ代わりに載せておきます。
まずはブラウザ上でGoogleコンソールのCloudFunctions項目をいじる必要があります。
FireBaseコンソールからGoogleコンソールに行ってCloudFunctions項目までの行き方は、前回のブログ
「Cloud Functionsのプログラムソースをサーバーからもってくる方法」と同じです。
CloudFunctionsのページを見ると、問題のAPIだけ「Authentication」項目のところに「未認証を許可」が表示されていません。どうやらこれが原因のようです。

https://admin.blog.fc2.com/control.php?mode=control&process=upload&insert=body#
ここを修正していきます。

問題のAPIのチェックボックスをオンにして、権限ボタンを押します。

現れたメニューの「プリンシバルを追加」を押します。

新しいプリンシバルに「allUsers」
ロールに「Cloud Functions 起動元」
を追加して保存ボタンを押します。
う〜ん、普通にデプロイしただけなのに、なぜこうなったのだろう。
投稿日:2022-05-19 Thu
FireBaseでCloud Functionsのデプロイされてるサーバープログラムをごくたまに見れないかなあと思うときがあります。通常はGitHubで管理してるので、GitHub見ればいいのですが今のデプロイされたサーバー状態を見たいときや出先でサーバーファイル見たいとき(GitHubで見ろ!って意見もあるかもしれないけど、デプロイ状態を見たい時)
昔はPHPでサーバープログラム書いてたときは、開発中はアップするときもSCPやFTPとかでやってた事が多かったのですぐみれたけど、方法はないのかなあと。
そしたら意外に簡単に見れたので自分がテストに作ったプロジェクトで参考にメモっておきます。
まずFireBaseコンソールの設定ボタンを押し、「プロジェクトの設定」を選択します。

「プロジェクトの設定」画面になったら「サービスアカウント」を選択しましょう。
「サービスアカウント」に移ると、右側に「サービスアカウント権限の管理」というリンクがあるので選択します。


そうすると紐付いてるGCPコンソールに移動しますので、
「Google Cloud Platfrom」と書かれた左側の棒三本の設定ボタンを押します。

現れたメニューの中から「Cloud Functions」を選びましょう。

デプロイされてる関数が並んでいます。
どの関数でも良いので、関数の名前を選択します。

遷移した先で、「ソース」をクリックすると、「Zipをダウンロード」というボタンがあります。
実際に落としてみましたが、デプロしてる全関数のファイルが格納されてました。
またCloud Functionで自分が書いてデプロイしてるファイルが、IDEで操作してるようにファイル一覧が見れて、移動して確認する事も出来ました。

投稿日:2021-09-12 Sun
訳あって、Vue勉強しはじめたのですが、FireBase認証やってみようと思いました。VueでFireBase認証やってる人は多いみたいでサンプルとか多いので苦戦はしないだろうと思っていたら、落とし穴が・・・
import firebase from 'firebase'
がうまくいかない。
エラーメッセージでは、
npm install --save firebase
を実行しなさいとか出てるけど、そんな事はとっくにやってるよ〜
海外サイトとか色々見てみましたが、いっこうに解決しそうな気がしない。諦めかけたときに別視点でググって、!と思う情報を発見。
FirebaseのバージョンがV8からV9に上がってるらしく、2021年9月時点では、
npm install --save firebase
ではV9が入るもよう。そしてこれが厄介なのだが
import firebase from 'firebase' では読み込めないように書式が変わってしまっていた。
おいおいおいおい・・・ と思いながら、じゃあどう書くんだと調べたら
import firebase from 'firebase/compat';
でちゃんと動くようになります。
ただこの書き方は、V8で作られてるソースをV9で互換性を高めるための書き方で、V9の書き方はまた別のがあるようです。
とりあえずネットみてもV8のサンプルばかりなので、
import firebase from 'firebase/compat';
でしばらくはいこうと思います。
こういうのが一番疲れる。。。
投稿日:2021-06-26 Sat
Unityでアプリを作るときに、uGUIでドラッグ実装をすることは良くあると思います。IBeginDragHandler, IDragHandler, IEndDragHandler3つのインターフェースを継承するもので、検索するといっぱいでてきます。
ドラッグ中に
public void OnEndDrag(PointerEventData eventData)
{
Debug.Log(eventData.delta);
}
等でeventData.deltaを使ってるとおもいますが、eventData.deltaから座標を取得したいときってあると思います。
把握したのでここに載せておきます。
uGUI(Canvas)内のIBeginDragHandler, IDragHandler, IEndDragHandlerを継承したMonoBehaviourのLocalPosition
そのLocalPositionをCanvas上のPositionへ変更し
MainCameraに対してWorld座標へ変換しています。
これでuGUI上でドラッグして座標を広いuGUI外のUnity2D(Sprite)や、3DのGameObjectに対して使える座標を使うことができます。
投稿日:2021-03-19 Fri
Unityで色々仕事を受けてると、色々なAssetを使う事になります。ゲームであれば、3Dモデルやモーション、音やUIなども良くAssetStoreから買いますし、ブルートゥースとかのAssetとか、その他諸々。
さてあるAssetを入れたら、アンドロイドのビルドが通らなくなりました。
BuildFailedException: Unsupported graphics API: OpenGLES3 or OpenGLES2 for this platform, but the selected graphics API is Vulkan. Please go to Player Settings and set "Graphics APIs" to OpenGLES3 or OpenGLES2.
とか
Error building Player: BuildFailedException: Unsupported graphics API: OpenGLES3 or OpenGLES2 for this platform, but the selected graphics API is Vulkan. Please go to Player Settings and set "Graphics APIs" to OpenGLES3 or OpenGLES2.
とか出てる。。。。
なんじゃこりゃ!?
しばらく格闘してやっと解決。忘れないうちにメモっておきます。
Project Settings の Androdの Graphics APIsの設定を修正したらビルドが通るようになりました。
デフォルトだとVulkanが上の方にあってOpenGLES3が下にあります。
この順番を入れ替えます。

Vulkanってなんだ?と思ったら、OpenGLに対して次世代のグラフィックAPIなんですね。
導入したAssetが新しいグラフィックAPIに対応してないって事のようです。
疲れた・・・
△ PAGE UP