7

Facebookからのアクセス許可を持つ配列と、ユーザーが指定する必要のあるアクセス許可の配列があります。

window.FB.api('/me/permissions', function(perm){                     
    if(perm){
       var given_permissions =  _.keys(perm['data'][0];
       var needed_permissions = ["publish_stream", "email"];
       //now check if given permissions contains needed permissions
    }
}

ここで、アンダースコアに精通した方法で、すべてneeded_permissionsが含まれているかどうかを比較します(2つの配列を自分でループして値を比較することはありません)。given_permissionsメソッドを見ました_.includeが、これは配列と値を比較します。すべての権限が利用可能な場合はtrueを返し、それ以外の場合はfalseを返します。可能であれば、私は素敵な単一回線の呼び出しを探していました。

これは、FB.loginユーザーが拡張アクセス許可をキャンセルすることを選択した場合でもtrueを返すためです。だから私はこれを再確認する必要があります。

4

3 に答える 3

18

_.difference必要なアクセス許可から特定のアクセス許可を削除すると、何かが残るかどうかを確認するために使用できます。

var diff = _(needed_permissions).difference(given_permissions)
if(diff.length > 0)
    // Some permissions were not granted

これの良い副作用は、diff何が問題なのかを伝えたい場合に備えて、不足しているアクセス許可を取得できることです。

于 2012-08-01T08:38:38.160 に答える
5

これはどう?

_.all(needed_permissions, function(v){
    return _.include(given_permissions, v);
});
于 2012-08-01T08:28:12.493 に答える
0

遅い答えですが、これは私にとってはうまくいきます:_.isEqual(given_permissions, needed_permissions);

于 2015-05-29T08:54:07.987 に答える