2016-06-01 12 views
3

私は、自分のアプリにユーザーの一意のIDを格納するための良い方法を見つけようとしています。私は、ユーザー管理のためのFacebookのログインを使用して、ユーザーのためのクラスを持っています:Facebook Graph API - ユーザーIDは一意ですか?

function FacebookUser(userObj) { 
    if (userObj) { 
     this.name = userObj.name; 
     this.id = userObj.id; 
     this.picture = userObj.picture.data.url; 
     this.isLoggedIn = true; 
    } else { 
     this.name = 'Login'; 
     this.id = 0; 
     this.picture = ''; 
     this.isLoggedIn = false; 
    } 
} 

基本的に、私はFacebookのログインを扱う角度でのサービスがあります。私がしようとしている何

.service('facebookService', function() { 

     this.getFacebookUser = function (callback) { 
      $.getScript("//connect.facebook.net/en_US/sdk.js", function() { 
       var appId = "12312312313123"; 
       FB.init({ 
        appId: appId, 
        status: true, 
        cookie: true, 
        xfbml: true, 
        version: 'v2.4' 
       }); 

       FB.getLoginStatus(function (response) { 
        if (response.status == 'connected') { 
         FB.api('/me?fields=picture,name,email', function (data) { 
          callback(new FacebookUser(data)); 
         }) 
        } else { 
         FB.login(function (response) { 
          FB.api('/me?fields=picture,name,email', function (data) { 
           callback(new FacebookUser(data)); 
          }) 
         }); 
        } 
       }) 
      }); 
     } 

    }) 

をユニークな識別子が何であるかを把握する。一意であることが保証されていますが、余分な権限を求めたくないので、私はちょうどユーザーの電子メールアドレスを使用したいと思います。もともと、私はidフィールドを使いたかったのですが、IDが変わるかどうかは不明です。 Facebookのドキュメントでは、idフィールドを次のように説明しています。

このユーザーのユーザーアカウントのIDです。このIDは各アプリに固有で、 です。異なるアプリで使用することはできません。私たちのアップグレードガイドはこれによると、アプリケーション固有のID

について より多くの情報を提供し、IDはアプリに固有であり、異なるアプリケーション間で使用することはできません。しかし、私はここでもう少し明確にしようとしています。 1人のユーザーが今日アプリにログインしてから数ヶ月後に再び同じID(同じアプリの場合)ですか、それとも変更されますか?副次的な質問は、私が変更を加えて新しいアプリIDを取得した場合、そのIDは同じか変更されるのでしょうか?それは技術的には同じアプリで、別のバージョンです。私の前提は、それは別のappIdなので、facebookはそれが完全に別のアプリだと思っていますが、私はfacebook apiには新しく、専門家に助言を求めています。

答えて

7

私は専門家ではありませんが、私はあなたの質問に答えようとします。

1人のユーザーが今日アプリにログインしてから数カ月後に再び同じID(同じアプリの場合)になるか、それとも変更されますか?

アプリケーションIDが同じであれば、間もなくログイン間でもユーザーIDは変更されません。

私が変更を加えて新しいアプリケーションIDを取得した場合、そのIDは同じか変更されますか?

新しいApp IDは別のAppを意味します。つまり、ユーザーIDが変更されます。しかし、新しいアプリIDを取得して同じユーザーにアクセスする必要がある場合は、FacebookのBusiness Mapping APIを使用できます。

Facebookのドキュメントからの抜粋:あなたは複数のアプリケーションで同じユーザーIDをマップしたり、クロスアプリのプロモーションを実行する必要がある場合は

、我々は新しいAPIを追加しましたビジネスマッピングAPIと呼ばれます。これにより、ログインしているユーザーのIDを、同じビジネスがすべて所有している限り、アプリ間でマッピングできます。

+0

ありがとうございます!私はBusiness Mapping APIを認識していませんでしたが、あなたが私の質問に完全に答えたと思います。 – mwilson

+0

異なるデバイス上の同じApp IDに対してuserIdが同じであることを確認できます。 –

+0

あなたの最初の回答が私の一日を保存しました。私は2回ロギングした後、私のDBに2つの異なるUIDがあるのを見て驚いていました。私はProdとDevの環境で2つの異なるアプリケーションIDを使用し、IDが時間的に変化する可能性があると考えました。私はsdkの初期化時に2つの異なるアプリケーションIDを設定していたためでした。あなたは専門家ではないかもしれませんが、確かにそれを釘付けにしました! :) – Matias