3

Actionscript 3 API を使用して Flash ベース (AS3) の Facebook Connect サイトを作成しています。ユーザーが正しくログインできるようにするための基本的な FB Connect 機能は用意されていますが、質問しようとすると壁にぶつかります。特定の拡張アクセス許可の場合。私は肯定的ではありませんが、AS3 API には次の 2 つのかなり重大な制限があるようです。

  1. 最初のログイン呼び出しとは別に、拡張アクセス許可を要求する必要があります。つまり、1 つではなく 2 つのモーダル ダイアログが必要です。これは、接続が FacebookSessionUtil のインスタンスで処理され、拡張アクセス許可要求が FacebookSessionUtil.Facebook のインスタンスで処理されるためと思われます。

  2. 電子メール アドレスをアプリケーションと共有することをユーザーに許可するようユーザーに求める方法はないようです。私はhttp://facebook-actionscript-api.googlecode.com/svn/release/current/docs/index.htmlを徹底的に熟読しましたが、そこにある「EMAIL」権限は、ユーザーにアプリを許可するように促すだけのようですメールアドレスを直接共有するのではなく、Facebook経由でメールを送信してください。

ここで私の仮定は間違っていますか?この種の作業には JS と ExternalInterface を使用したほうがよいでしょうか? 今あるものを再構築したくはありませんが、これらの制限が現実のものである場合、他に選択肢がないように思われます.

フィードバックや支援をいただければ幸いです。ありがとう!

4

2 に答える 2

1

onLogin1) クラスの関数をオーバーライドDesktopSessionし、拡張アクセス許可パラメーターを追加する必要があります。

2)権限モデルの変更がプロキシされた電子メールに対してのみ許可されていない限り、機能するはずです。Facebook ユーザー インスタンスからクエリを実行して、結果を確認してください。

コンソール ブロックで次の API 呼び出しを使用して、開発者コンソールでテストします。

<button id="fb-login">Login &amp; Permissions</button>

<script>
document.getElementById('fb-login').onclick = function() {
  var cb = function(response) {
    Log.info('FB.login callback', response);
    if (response.session) {
      Log.info('User logged in');
      if (response.perms) {
        Log.info('User granted permissions');
      }
    } else {
      Log.info('User is logged out');
    }
  };
  FB.login(cb, { perms: 'email' });
};
</script>
于 2010-06-28T14:46:05.837 に答える
1

AS3ですべてを直接実行できる別の方法があります(非常に便利です)

これは、Facebook で作成しているゲームのコード スニペットで、ゲームの特定の時点でアクセス許可が必要です..うまく機能します。(init 呼び出しで channel.html と oauth: true を指定する必要があることに注意してください)

まず、API の最新バージョン (現在は 1.7) を使用していることを確認してください (http://code.google.com/p/facebook-actionscript-api)

private function facebookInit():void     // START THE SESSION…
{
    Facebook.init(APP_ID, facebookInitHandler,{
        appId: APP_ID,
        status: true,
        cookie: true,
        xfmbl: true,
        channelUrl: ‘http://yoursiteurl/channel.html',
        oauth: true,
        perms: “publish_stream,email”
    });
}

private function facebookInitHandler(response:Object, fail:Object):void
{
    if (response.accessToken)
    {
        userAccessToken = JSON.encode(response.accessToken);
        facebookLoggedInWithToken = true;
        loadProfileData();
    } else {
        facebookLoggedInWithToken = false;
    }
}

private function loadProfileData():void
{
    var request:String = ‘/me’;
    var requestType:String = ‘GET’;
    var params:Object = null;
    Facebook.api(request, loadProfileDataHandler, params, requestType);
}

private function loadProfileDataHandler(response:Object, fail:Object):void
{
    if (response) {
        userID = response.id;
        fullName = response.name;
        firstName = response.first_name;
        lastName = response.last_name;
        userEmail = response.email;
        userPicURL = ‘http://graph.facebook.com/‘ + userID + ‘/picture’;
    }
}

楽しい!

于 2011-10-02T23:17:58.763 に答える