2017-03-03 2 views
0

私はFB APIから奇妙なことを観察します。 1人のユーザーには2つの異なるIDがあります。FB APIでは、1人のFBユーザーに2つの異なるユーザーIDがあります。どうして?どのようにそれを制御する?

クライアントでFB JavaScript SDKを使用しています。

まず、私はFB.getLoginStatusを呼び出します。応答は、このようなものです:

authResponse: { 
    accessToken: "EAAa8S8Ocf.....QZBQ9BPQZDZD", 
    expiresIn: 7045, 
    grantedScopes: "email,contact_email,public_profile", 
    signedRequest: "rFndHA67......M5MDMifQ", 
    userID: "x895xxxxxxx3909", // this is userID #1 
} 
status: "connected" 

は、その後、私は userID受信用 FB.apiを呼び出すと、私は完全に別のユーザーIDを取得:

"id": "x304xxxxxxx3177", // different user ID 
"name": "John Doe", 
"first_name": "John", 
"last_name": "Doe", 
"age_range": { 
    "min": 21 
}, 
"link": "https://www.facebook.com/app_scoped_user_id/x304xxxxxxx3177/", 
"gender": "male", 
"locale": "en_US", 
"timezone": 8, 
"updated_time": "2017-02-03T17:34:27+0000", 
"verified": true 

どのようにそれは可能ですか?これはFB APIのイースターエッグとはどのようなものですか?

実ユーザIDが第二一つであり、それは、ユーザプロファイルのURLにあります。ここでは

https://www.facebook.com/profile.php?id=x304xxxxxxx3177

は私の完全な要求フローである:

FB.getLoginStatus(status => { 
    if(status.status == 'connected') { 

     // Here FB sends one userID 
     // status.authResponse.userID == x895xxxxxxx3909 

     FB.api('/' + status.authResponse.userID, 'get', {fields: '...'}, 
     response => { 

      // And here FB sends different userID for the same user 
      // response.id == x304xxxxxxx3177 
     } 
    } 
}) 
+0

API v2.0以降、ユーザーIDはアプリスコープです。しかし、なぜあなたは最初に認証レスポンスデータ構造からユーザIDを取り出しているのですか? '/ me'を使うのはなぜですか? – CBroe

+0

1)*ユーザーIDはアプリスコープ*とはどういう意味ですか? 2つのIDを持つユーザーを区別するにはどうすればよいですか? 2) '/ me'または' status.authResponse.userID'を使用しても問題はありませんが、FBは正しいユーザーIDを返すことができません。これは、ユーザーIDを絶対に予期せず、任意のものに戻します。 'status.authResponse.userID'を返します。それ以外のときは' response.id'を返します。 – Green

+0

App-scopedとは、あなたのアプリがあなたのアプリに固有のIDです。他のアプリには別のIDが表示されます。 (異なるアプリケーション間でユーザーを識別できるようにする必要がある場合は、まずそれらを同じビジネスに追加する必要があります)_「/ meまたはstatus.authResponse.userIDを使用するかどうかは関係ありません。正しいユーザーIDを返してください "_ - おそらく、あなたが得たものは_wrong_ idだったという仮定は、最初は真実ではありませんか? – CBroe

答えて

0

アプリケーションに関連付けられたユーザーID(APP_ID)。

FacebookのAPIは、各アプリケーションに1つの一意のユーザーIDを提供します。

関連する問題