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にあります。ここでは
は私の完全な要求フローである:
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
}
}
})
API v2.0以降、ユーザーIDはアプリスコープです。しかし、なぜあなたは最初に認証レスポンスデータ構造からユーザIDを取り出しているのですか? '/ me'を使うのはなぜですか? – CBroe
1)*ユーザーIDはアプリスコープ*とはどういう意味ですか? 2つのIDを持つユーザーを区別するにはどうすればよいですか? 2) '/ me'または' status.authResponse.userID'を使用しても問題はありませんが、FBは正しいユーザーIDを返すことができません。これは、ユーザーIDを絶対に予期せず、任意のものに戻します。 'status.authResponse.userID'を返します。それ以外のときは' response.id'を返します。 – Green
App-scopedとは、あなたのアプリがあなたのアプリに固有のIDです。他のアプリには別のIDが表示されます。 (異なるアプリケーション間でユーザーを識別できるようにする必要がある場合は、まずそれらを同じビジネスに追加する必要があります)_「/ meまたはstatus.authResponse.userIDを使用するかどうかは関係ありません。正しいユーザーIDを返してください "_ - おそらく、あなたが得たものは_wrong_ idだったという仮定は、最初は真実ではありませんか? – CBroe