0

おそらく私はこれを間違った方法で行っていますが、Facebook のログインを許可する Web サイトを持っています。

  1. ユーザーがすでに私のウェブサイトに登録している場合
  2. Facebookにログインしていますが、私のサイトにはログインしていません
  3. ログインページにアクセスするとき、Facebookのログインステータスを確認し、経由して取得しますresponse.status === 'connected'-

    FB.Event.subscribe('auth.authResponseChange', function (response) 
    {
        if (response.status === 'connected') 
        {
            var s = JSON.stringify(response.authResponse);
            LogMeIn(s, function(response) 
            {
                HandleAjaxError(response, function(msg)
                {
                    window.location = '/_/';  
                });
            });
        }
     }
    
  4. 次に、authResponse オブジェクトをサーバーに渡し、このユーザーとしてログインする前に、このユーザー ID がこのトークンで機能することを確認します。

私は単にjsonの内容を取得するために読んだ -

https://graph.facebook.com/ {userID}?access_token={accessToken}

エラーが返されない場合は問題ありません。しかし、このメソッドをテストすると、同じ access_token が 2 つの異なるユーザー ID に対して機能することがわかりました (つまり、コンピューターにログインしていないユーザー ID に対してエラーが返されませんでした)。代わりに、名前、場所などを含む Facebook ユーザー オブジェクトを返しました。

access_tokento work only with a single useridを期待していたので、これには本当に驚きました。

誰かがスクリプトを続行する前にユーザー ID を変更するのを防ぐために、サーバー側で認証する必要があります。これを達成する方法は何ですか?

証拠、これらのリンクにアクセスしてプロフィール情報を確認してください

私のプロフィール-

https://graph.facebook.com/1233822590?access_token=CAACCBJJZBgjABAOGmvmsou8gMYGulLHTgAr5ZCHZAU7pKEp0cMAeX8r4qHLpiVuZCOT1v0ulMZAxX5YfLJkcZBr9l6qJQoPxWS5Fs5ndohDnH6ZAPPfZCZCTQtwWgAZAg6I1PAOIpdtCc0OUaMmBZAvGiMm9gQhmNXRbocZD

同じ access_token を持つ別のユーザー ID-

https://graph.facebook.com/100000116781159?access_token=CAACCBJJZBgjABAOGmvmsou8gMYGulLHTgAr5ZCHZAU7pKEp0cMAeX8r4qHLpiVuZCOT1v0ulMZAxX5YfLJkcZBr9l6qJQoPxWS5Fs5ndohDnH6ZAPPfZCZCTQtwWgAZAg6I1PAOIpdtCc0OUaMmBZAvGiMm9gQhmNXRbocZD

4

1 に答える 1

0

驚くことは何もありません。Facebookの任意のユーザーのアクセストークンを使用して、Facebookの任意のユーザーの基本的な詳細を取得できます..したがって、これはトークンを検証するための本当に良い方法ではありません. また、そのトークン部分の確認は不要です。

サーバー側を介した承認が必要な場合は、通過します。このリンク

于 2013-08-23T19:47:50.967 に答える