2

タブ アプリからユーザーを認証することはできますか?

壁に投稿できるようにする必要がある ASP.NET MVC 3 Facebook タブ アプリを作成しようとしています。

私の最初の推測は、CanvasAuthorizeAttribute

[CanvasAuthorize(Permissions="publish_stream")]

しかし、それは私のタブをFacebookのログイン認証ページにリダイレクトしてからキャンバスページに戻し、ファンページ(タブ)に留まらないようにします。

次に、CanvasAuthorizeを削除して、次のことを試しました

public string Index()
{
    bool isAuthorized = FacebookWebContext.Current.IsAuthorized("publish_stream");

    return isAuthorized.ToString();
}

そのため、ユーザーが承認されていない場合は承認ポップアップを起動することを決定できましたが、ここで問題に直面しています。

  • 以前に別の方法で stream_publish パーミッションを使用してアプリを承認してから、ページをアプリ ( http://apps.facebook.com/ myapp / mytab )として実行する、ファンページ タブ ( http://www .facebook.com/ myfanpage ?sk=app_ myappid ) はfalseを返します。

タブはパーミッションを読み取れないのに、キャンバス ページは読み取れるのはなぜですか?

4

1 に答える 1

3

Facebookページから、signed_requestを調べることで、ユーザーがアプリを承認したかどうかを検出できます。user_idとoauth_tokenが渡された場合、ユーザーはすでにアプリを承認しています。そうでない場合は、コントローラーアクションから次のようなことを行うことができます。

    string[] extendedPermissions = new[] { "publish_stream", "manage_pages" };
    var oauth = new FacebookOAuthClient(FacebookWebContext.Current.Settings);
    var parameters = new Dictionary<string, object> {
                { "redirect_uri", "http://www.facebook.com/pages/{SomeFacebookPage}?sk=app_{appId}"}
            };

    parameters["scope"] = String.Join(",", extendedPermissions);
    var loginUrl = oauth.GetLoginUrl(parameters);

    return Redirect(loginUrl.AbsoluteUri);

ユーザーがアプリを認証すると、ユーザーは「redirect_uri」に送信されます。これは、Facebookページのアプリタブになります。

于 2011-05-06T05:37:36.300 に答える