FC2ブログ
 
■プロフィール

クリエイトウェーブスタッフ

Author:クリエイトウェーブスタッフ
開発における、諸々を書いていきたいなと思っています。

■最近の記事
■カテゴリー
■twitter

■QRコード

QR

■最近のコメント
■月別アーカイブ
■最近のトラックバック
■ブロとも申請フォーム
■twitter_follow

■ブログ内検索

■RSSフィード
■リンク
setAutoPaddingの書き方が変わっていた
前にCloud FunctionとUnityで暗号通信やろうとして
Node.jsとUnityで暗号通信
を載せたのですが、そのとき引っかかったのがパディングの設定。
パディングの設定をしなければ、うまくいかなかったのですが、今回仕事で実装しようとしたら・・・あれれれれ

自分はCloud Function(NodeJS)をプログラムするときは、IDEはintellijを使ってるのですが
decipher.setAutoPadding(auto_padding =false);
auto_paddingの部分が赤文字になってるぞ。。。。。   まさかintellijのような超優秀なIDEがミスするわけないし。。。 と思ってたらやっぱり駄目だった・・・

decipher.setAutoPadding(false);
と書くのが正解になったようです・・・
まあ仕様が変わる事はよくあるし、今回の書き方のほうがしっくりくるけど・・・
まあ宿命ですね・・ ちょっとだけ苦戦しました。


カテゴリー:FireBase | TM(0) | CM(0)
FireBaseのCloudFunctionsからβマークがなくなっている
cf.jpg

FireBaseのドキュメントのとこみたら、CloudFunctionからβマークがなくなってるじゃありませんか!!
ついに正式版になったのですかね。
調べたんですが、ちょっとよくわからない。

でもFireBaseは、積極的に使っていくのでCloudFunctnからβが取れたのは嬉しい限りです。
Node.JSも大分慣れましたしね!!

カテゴリー:FireBase | TM(0) | CM(0)
CloudFunctionでGETを受信
ものすごく、しょうもない事で時間を使ってしまったので備忘録

FireBaseのfunctionsでGETってどうやってうけとるんだっけ? と思ったのだけどそれがわかんなくて・・・
functions.https.onRequest((request, response) => { の命令のあとに request.method でGETかPOSTを分岐させてるページはあるんですが、実際のパラメータ取得のサンプルはPOSTばかり・・・・

結局、よくわからなくてnode.js(functionsは結局node.jsですもんね)のGETサンプルのページみつけて解決しました。
node.jsのもなかなかわかりやすいサンプルみつからず・・・・

https://~~~~~~~~~~~~~~~~~~~~~~~~~~~/gettest?user=akito
でuserにakitoって文字入れてるんですがfunctionsは無事以下のようにしたらとれました。

exports.gettest = functions.https.onRequest((request, response) => {
response.send(request.query['user']);
});

こんなのに時間かけてしまって・・・
しかも使う事あるのだろうか・・・


カテゴリー:FireBase | TM(0) | CM(0)
Cloud functions上とUnityのAPI通信で余分な文字列削除
昨日の暗号の実験も兼ねて、FireBaseのCloud functions(言語はNode.js)にUnityからPOST通信でJson文字列を送ってみました。
文字列はちゃんときてて見かけ上は

var jsonStr = {"id":"UnityEditor"}; 
var json = JSON.parse(jsonStr);
※ {"id":"UnityEditor"};がUnityから送った文字列です。

しかし・・・ しかしですよエラーです。
おかしい・・・・ 意味わからない。

Cloud functionsのエラーログを見ると{"id":"UnityEditor"} の20文字目が原因とある。
調べてみると最後の }  の文字が0からスタートして19文字目で20文字目なんてない・・・ハズ。
Unityで暗号かけて、Node.js で複合してるせいなのか・・・・ それともそんな事しなくてもこうなるの?

とにかく、これはログとかに出ない最後になんか変な文字が入ってるなと思って
(これが結構プログラムしてると出くわす問題だったりします)

jsonStr = jsonStr.trim();

をかけてみました。効果なし・・・・・
う~む

とりあえず、jsonStrの文字数をログに出してみる・・
32文字・・・  えっ32文字だって・・・・ 全部で20文字なのに12文字多いのはどういうこっちゃ!! と思って
for(var i = 0 ; i < jsonStr .length ; i++)
{
   console.log(jsonStr.charCodeAt(i));
}

で一文字ずつ文字コードをコンソールに書き出してみました。 
20から32まで文字コード0が続いている・・・ 文字コード0!? そんな文字あるの?

しょうがないので色々しらべて
jsonStr = jsonStr.replace(new RegExp("^" + String.fromCharCode(0) + "+|" + String.fromCharCode(0) + "+$", "g"),'');

と、文字列の前後から余分な文字コード0の文字を削除する命令をつけてみました。
そしたら、うまくいった。
問題なく文字列をJson化してくれました。

毎回一発でうまくいかなくて、がっくりきますが、今回もそのパターン・。
とりあえず、うまくいってよかった。

カテゴリー:FireBase | TM(0) | CM(0)
Node.jsとUnityで暗号通信
使うかどうか判りませんが、FireBaseのCloud functions(言語はNode.js)とUnity(C#)でAESの暗号のやりとりを出来るようにしておこうとやってみました。
Unityのコードは

実際サーバーをPHPでやっていた時は、うまく動いてました。

で、Node.jsの方も色々調べて

というのを書いてみました。

Node.js上で作った暗号は、Node.jsで複合成功。
Node.jsで作った暗号は、Unityで複合成功
しかし。。。。 Unityで作った暗号はNode.jsで複合に成功しない・・・・エラーです。

う~む、これで終わりと思ったのですが、やはりうまくいかないものです。
格闘して調べて正解は

decipher.setAutoPadding(auto_padding =false); //パディングの設定をしなければならない
が必要のようです。
Unity側でパディング設定があるから、Node.js側もいるのでは? と思ったらズバリでした。(パディングの意味とか判ってないんですが><)

ホントは、module.exports でクラス化したかったんですが、exportsするとなぜかこの
decipher.setAutoPadding(auto_padding =false); を受け付けてくれない・・・ なぜなんでしょう。

結局1日以上潰してしまいました。

カテゴリー:FireBase | TM(0) | CM(0)
次のページ

FC2Ad