ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

ログインしているユーザが匿名会員かどうか判別する

f:id:mbaasdevrel:20200408172048p:plain

アプリを利用しているユーザが手間をかけることなくACLを利用できる匿名会員機能。IDやパスワード、ソーシャルメディアとの結びつけも不要なので手軽に利用できます。

そんな匿名認証を利用している場合に、そのログインユーザが匿名会員かどうか判別したいこともあるでしょう。そんな方法を紹介します。

iOS(Objective-Cの場合)

Objective-CのSDKでは専用のメソッドを用意しています。

if ([NCMBAnonymousUtils isLinkedWithUser:[NCMBUser currentUser]]) {
    NSLog(@"匿名ユーザー");
} else {
    NSLog(@"匿名ユーザーではない");
}

Androidの場合

Androidも専用のメソッドがあります。

if (NCMBUser.getCurrentUser().isLinkedWith("anonymous")) {
    // 匿名ユーザー
} else {
    // 匿名ユーザーではない
}

Swiftの場合

Swiftの場合は下記のように判別を行います。

// ログイン状況の確認
if let user = NCMBUser.currentUser {
    // 匿名ユーザーでログインしているかの確認
    if NCMBAnonymousUtils.isLinked(user: user) {
        print("匿名ユーザーです。")
    } else {
        print("匿名ユーザーではありません。")
    }
} else {
    print("ログインしていません")
}

JavaScriptの場合

JavaScriptでは専用のメソッドがありませんでした。そこで、次のようにして確認できます。

const user = ncmb.User.getCurrentUser();
const anonymouse = (authData = user.get('authData')) && authData['anonymous'] && !user.get('password');
console.log('anonymouse?', anonymouse);
// trueなら匿名会員、falseなら一般会員

Unityの場合

Unityも専用のメソッドがあります。

if (NCMBUser.CurrentUser.IsLinkWith("anonymous")) {
    UnityEngine.Debug.Log("匿名ユーザー");
} else {
    UnityEngine.Debug.Log("匿名ユーザーでは無い");
}

まとめ

パスワードを確認しているのは、匿名認証の会員がパスワードを設定し、繰り返しログインできるようになったことを想定しています。この場合はもう匿名会員ではありません。

匿名会員は手軽に使えて、デバイスごとのデータ管理をセキュアにしてくれる機能です。ぜひアプリ開発に役立ててください。

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。