0

2013 年 4 月 23 日現在、私が求めていることを行うことはできません。代わりにできることの 1 つは、ログイン ダイアログから受け取ったグループ ID に基づいて特定のページにリダイレクトする JS コードを記述することです。


Facebook JS SDK を使用して Facebook の接続/ログイン領域を作成しています。この領域は、特定の Facebook グループの一部である人々のためのものです。グループに参加しているかどうかを確認するためにログインが必要です。そうでない場合はログインに失敗し、参加している場合は次のページに進むことができます。

これは、グループ (および友人グループ) を表示する許可を求めるコードです。グループは秘密であるため、Facebook のドキュメントに従ってこの許可が必要です。

function login() {
            FB.login(
                     function(response) {
                     if (response.session) {
                     alert('8');
                     } else {
                     alert('9');
                     }
                     },
                     { scope: "email,user_groups,friends_groups" }
                     );
        }

グラフ API によると、次のようなものを呼び出すことができます。

{
  "email": "*useremail*@gmail.com", 
  "id": "*userid*", 
  "groups": {
   "data": [
  {
    "id": "*groupid*", 
    "administrator": true, 
    "bookmark_order": 1
  }
], 
"paging": {
  "next": "https://graph.facebook.com/*userid*/groups?fields=id&limit=5000&offset=5000&__after_id=*groupid*"
    }
  }
}

グループ ID と FB ユーザー ID を非表示にするために、置き換えたものを * で囲みました。


すべてのグループ ID ではなく、特定のグループ ID をログイン用に呼び出すことができるかどうかを示す Facebook のドキュメントは見つかりません。また、返された値が必要なグループ ID と一致するかどうかを確認できる回避策があれば、それも受け入れられます。

これで十分に機能することを願っています。ありがとうございます。

4

1 に答える 1

1

現在、標準の Facebook ログイン シーケンスでは、ユーザーが特定のグループのメンバーでない場合にログインが失敗するように設定することはできません。標準のログインを実行してから、(サーバー上で) 彼らがグループに属しているかどうかを確認する必要があります。ブラウザの Javascript でグループ メンバーシップ チェックを実行したくない場合は、ログインが偽装される可能性があります。

編集: javascript API (ユーザーがログインしたら) を使用して、グループ接続を取得する必要があります ( http://developers.facebook.com/docs/reference/api/user/に記載されているとおり)。このようなもの(ログインコールバックで):

var check_for_group = function(groupid, callback){
FB.api('/me/groups', function(response) {
  // process the list of groups: response is an array
  for(var i=0;i<response.length;i++){
    if(response[i].id == groupid){ callback(true); return }
  }
  callback(false);
});
};

掘り下げてからしばらく経ったので、応答オブジェクトが実際に配列であることを確認する必要がありますが、check_for_group()探しているグループのIDで呼び出すと、次のいずれかで呼び出されますtrue(必要なグループが応答リストにあった場合) またはfalse(そうでない場合)。そのようなことを試してみて、それがあなたのために働くかどうか見てください.

于 2013-04-23T19:15:51.700 に答える