identity & security

ソーシャルログインの設定とユーザー分析

ソーシャルログインを使って、ユーザーデータの収集・送信・分析するには

Jan 25, 20173 min read

はじめに

データ主導の意思決定を行う企業は、ユーザーについてできるだけ多くのことを知る必要があると認識しています。

しかし、優れた企業は、データを取得する最善の方法は、質問することではないと理解しています。むしろ、既存のデータをすばやく効率的に収集するためのファネルを構築することです。

このため、ソーシャルログインは最も強力なアナリティクスツールの 1 つです。すでにセットアップ済みのソーシャルメディアアカウントを使用してアプリにログインするオプションにより、ユーザーは新しいユーザー名とパスワードの組み合わせを作成する面倒な手順を省くことができます。そして、御社にとってはユーザーがどのような人物を知る手間が省けます。

Auth0 は、B2C 企業が使いやすい最新の顧客アイデンティティ管理ソリューションを使用して、顧客のプロファイルをエンリッチメントするのに役立ちます。

シンプルなツールやコードがいくつか用意されているため、公開されている情報を使って、マーケティング、製品開発、ユーザー維持に関してより適切な意思決定を行うことができます。

サインアップからログイン、分析まで、ユーザーデータの活用を始めるために必要なことを段階的に説明します。

1.ソーシャルログインをセットアップする

最初に決定する必要があるのは、ソーシャルログインでサポートするソーシャルメディアプラットフォームの種類です。

Auth0 のソーシャルログインプロバイダ

Auth0 では、各種ソーシャル API のさまざまなヘッダーと応答形式を自動的に調整できるため、開発者は、(技術的に)どれを有効にできて、どれを有効にできないのかを考える必要はありません。

考える必要があるのは、御社のユーザーが使用したいソーシャルプロファイルの種類についてです。

人気とデータへのアクセス性の両面において、Facebook と Google はどちらも確実に候補に入ります。この 2 社を合わせると、Web 上のすべてのソーシャルログインの 3/4 以上を占めています。ソーシャルが基本となっているアプリ(メッセージング、コミュニケーション、エンターテイメント)の開発に取り組んでいる場合、前述のソーシャルログインをサイトに配置せざるを得ないでしょう。

プロバイダごとにソーシャル接続を共有します。

しかし、開発者ツール、マーケティングと営業、ファイル共有のように専門的な開発に取り組んでいる場合、最適なユーザーデータを取得するためのより優れた選択肢が他にも存在することになります。

Github または Bitbucket プロファイルからある開発者のリポジトリやコミットをすべて引き出したり、あるユーザーの Dropbox アップロードすべてを御社のチームワークコラボレーションツールに自動的に統合したりすることを想像してみてください。

新規登録時のソーシャルグラフを取得して御社のプラットフォームを利用している友人全員を表示したり、すぐにやり取りを始められるコンテンツを提供したりすることもできます。

ユーザーがログインしやすくなるだけではなく、より良いユーザーエクスペリエンスの構築に役立つプラットフォームと統合されているソーシャルログインをサポートしてください。

2. ルールをセットアップする

収集する情報の種類は、データの使用方法や収集元のプラットフォームによって異なりますが、それに関係なく収集方法は同じです。

たとえば、ユーザーが Twitter のソーシャルログインオプションを使用してサインアップしており、そのユーザーがどの国にいるのかという情報を収集したいとします。Auth0 のすべての収集は、ルール(ユーザーが認証されるたびにバックエンドで実行される JavaScript のスニペット)を介して実行されます。

Auth0 ルール

Twitter 経由でログインするすべてのユーザーから現在の国に関するデータを収集する場合は、ユーザープロファイル Auth0 のルールに国を追加してから、このコード行を使用して国を取得します。

var country = user.country;

Auth0 のセグメントルールを使用すると、そのデータをセグメントに送信してから、選択した電子メールマーケティングツールに送信できます。

function (user, context, callback) {
  if (context.protocol === 'delegation') {
    return callback(null, user, context);
  }

  const request = require('request');

  if (context.stats.loginsCount > 1) {
    sendEvent('Logged in');
  } else {
    sendEvent('Signed up');
  }

  function sendEvent(e) {
    const sioTrack = {
      userId: user.user_id,
      event: e,
      properties: {
        application: context.clientName
      },
      context: {
        ip: context.request.ip,
        userAgent: context.request.userAgent
      }
    };

    // Segment API returns 200 OK for all its request. For possible errors
    // you must use Segment's Debugger (https://segment.com/docs/libraries/http/#errors)
    request({
      method: 'POST',
      url: 'https://api.segment.io/v1/track',
      headers: {
        'Content-type' : 'application/json',
        'Authorization': 'Basic ' + Buffer.from(configuration.SEGMENTIO_WRITE_KEY + ':').toString('base64')
      },
      body: JSON.stringify(sioTrack),
    });
  }

  callback(null, user, context);
}

追加のルールを使用して、各ユーザーの推定平均収入(IP アドレスの郵便番号に基づく)を収集したり、同じメールアドレスを持つアカウントをリンクしたりできます。

3.データを分析して使用する

アプリ内のすべてのユーザー認証のクリアリングハウスである Auth0 は、ユーザーデータの信頼できる唯一の情報源として運用できます。バックエンドでルールを実行した状態で個別のユーザー ID からデータが引き出されれば、誤ったタグや誤検出のリスクはありません。

このため、Auth0 は高い精度が求められる分析に特に適しています。新しいクーポンコードを知らせる製品発売前の電子メールの送信対象とするユーザーを分析するために、年齢、収入、性別、地域、興味、婚姻状況別にすべてのユーザーをセグメント化するとします。

ソーシャルログインを使用すると、このような種類のデータで簡単にユーザープロファイルをエンリッチメントできます。このようなエンリッチメントを行うアプリケーションは無数にあります。

  • パーソナライズされたオンボーディング:製品マネージャからマーケティング担当者など、あらゆる人が御社の SaaS 製品を使用している場合は、役割属性を使用して、各ユーザーを特定のニーズに合わせて設計されたオンボーディングフローに導きます。
  • リテンションの分析:アクティビティごとにユーザーベースをセグメント化し、どのようなユーザーが最も長期間サイトに出入りする傾向にあり、どのようなユーザーがアプリを最大限に活用し、どのようなユーザーが再びエンゲージメントしようとしているかを確認します。
  • 顧客のペルソナの構築:顧客を代表的なペルソナにグループ化することは、マーケティングおよび製品開発の取り組みに集中するのに効果的な方法です。しかし、ユーザーがどのような人物で、どこからアクセスしており、どう行動するのかに関する定量的モデルを構築するためにアナリティクスを使用する場合、すべてを直感的に実行する必要はありません。

Auth0 ユーザーは、事前に作成されたルールを使って、さまざまなアプリケーションにユーザー情報を送信できます。さらに、最近 Auth0 Extend という製品をリリースしました。この製品を使用すると、企業は JavaScript コードを受け入れる使いやすい拡張ポイントを顧客に提供できます。Auth0 Extend を使用すると、顧客は、Marketo、Salesforce、Concur などの他の SaaS システムと統合することで、カスタムビジネスルールや定期ジョブを作成したり、エコシステムに接続したりできます。どれもプレーンな JavaScript モジュールと NPM モジュールを使用します。

Slack

Slack ロゴ

Slack は単なる通信ツールではありません。適切な統合によって、Slack は重要なビジネス活動のハブのように機能します。

Slack ルールを使用すると、選択した Slack チャネルをすべてのユーザーに通知できます。

function(user, context, callback) {
  // short-circuit if the user signed up alreadyif (context.stats.loginsCount > 1) return callback(null, user, context);

  // get your slack's hook url from: https://slack.com/services/10525858050var SLACK_HOOK = 'YOUR SLACK HOOK URL';

  var slack = require('slack-notify')(SLACK_HOOK);
  var message = 'New User: ' + (user.name || user.email) + ' (' + user.email + ')';
  var channel = '#some_channel';

  slack.success({
   text: message,
   channel: channel
  });

  // don’t wait for the Slack API call to finish, return right away (the request will continue on the sandbox)`callback(null, user, context);
}

Mixpanel

Mixpanel ロゴ

Mixpanel は、モバイルアプリケーションと Web アプリケーションの両方でユーザーの行動を確認できるアナリティクスプロバイダです。アプリの特定の機能がどのように実行されているか、毎日のようにアプリを使っているユーザーとそうでないユーザーの違いは何かなどを調べることができます。

次のルールは、固有のユーザーがアプリにログインするたびに Mixpanel に

Sign In
イベントを送信します。詳細については、Mixpanel の HTTP API を参照してください。

function (user, context, callback) {

  var mpEvent = {
    "event": "Sign In",
    "properties": {
        "distinct_id": user.user_id,
        "token": "{REPLACE_WITH_YOUR_MIXPANEL_TOKEN}",
        "application": context.clientName
    }
  };

  var base64Event = new Buffer(JSON.stringify(mpEvent)).toString('base64');

  request.get({
    url: 'http://api.mixpanel.com/track/',
    qs: {
      data: base64Event
    }
  }, function (e, r, b){
      // don’t wait for the MixPanel API call to finish, return right away (the request will continue on the sandbox)
      callback(null, user, context);
  });
}

Fullcontact

Fullcontact ロゴ

FullContact は連絡先管理ソフトウェアで、連絡先のリストの統合、重複排除、および消去に使用されます。このような作業は、メディア企業はもちろん、営業やマーケティングという負荷の高い組織にとって悩みの種です。

FullContact ルールにより、ユーザーの電子メールアドレスを使用して FullContact からユーザーのプロファイルを取得できます。ユーザーの情報が利用可能な場合は、

fullContactInfo
プロパティが
user_metadata
に追加されます。詳細については、FullContact API のドキュメントを参照してください。

function (user, context, callback) {
  var FULLCONTACT_KEY = 'YOUR FULLCONTACT API KEY';
  var SLACK_HOOK = 'YOUR SLACK HOOK URL';

  var slack = require('slack-notify')(SLACK_HOOK);

  // skip if no email
  if(!user.email) return callback(null, user, context);
  // skip if fullcontact metadata is already there
  if(user.user_metadata && user.user_metadata.fullcontact) return callback(null, user, context);
  request({
    url: 'https://api.fullcontact.com/v2/person.json',
    qs: {
      email:  user.email,
      apiKey: FULLCONTACT_KEY
    }
  }, function (error, response, body) {
    if (error || (response && response.statusCode !== 200)) {

      slack.alert({
        channel: '#slack_channel',
        text: 'Fullcontact API Error',
        fields: {
          error: error ? error.toString() : (response ? response.statusCode + ' ' + body : '')
        }
      });

      // swallow fullcontact api errors and just continue login
      return callback(null, user, context);
    }


    // if we reach here, it means fullcontact returned info and we'll add it to the metadata
    user.user_metadata = user.user_metadata || {};
    user.user_metadata.fullcontact = JSON.parse(body);

    auth0.users.updateUserMetadata(user.user_id, user.user_metadata);
    return callback(null, user, context);
  });
}

顧客データを使用して、より優れたアプリケーションを構築する方法は無限にあります。重要なのは、本当にうまくいくものが見つかるまで実験を続けることです。見つかったら、それに賭けてみましょう。

特効薬などありません。できることは強みを探すことだけです。しかし、アナリティクスを使用すると、その強みがずっと早く見つかります。

Auth0 が提供する豊富な Free Tier を使用して、B2C、B2B、小売、および CIAM 製品に最新の認証を搭載しましょう。