1

ユーザーがアプリケーションからFacebookにメッセージを投稿できるようにするアプリケーションを構築しています。問題は、publish_stream権限のユーザーaccess_tokenを取得する方法がわからないということです。

これは私がこれまでに得たものです:

        var fb = new FacebookClient();
        dynamic result = fb.GetLoginUrl(new
        {
            client_id = AppID,
            client_secret = AppSecret,
            grant_type = "client_credentials",
            scope = "publish_stream",
            state = "http://localhost:17578/Facebook.aspx",
            redirect_uri = "http://localhost:17578/Facebook.aspx"
        });

これは正常に機能し、クエリ文字列に「コード」を返します。ただし、そのコードをどうすればよいかわかりません。「古い」FacebookC#sdkには、メソッドFacebookOAuthClientを持つクラスが含まれていましたExchangeCodeForAccessToken()が、新しいSDKでこの静的メソッドがどのように置き換えられているのかわかりません。

したがって、問題は実際には、返されたコードをaccess_tokenと交換する方法です。

4

1 に答える 1

2

コードクエリ文字列パラメータを取得したら、FacebookGraphAPIを呼び出してアクセストークンを取得する必要があります。

https://developers.facebook.com/docs/howtos/login/server-side-login/

FacebookClient client = new FacebookClient();
dynamic result = client.Get("oauth/access_token", new { client_id = Settings.Social_Facebook_App_Id, client_secret = Settings.Social_Facebook_Secret_Key, code = Request.QueryString["code"], redirect_uri = Settings.Social_Facebook_Login_Redirect_URI });
if (result.error == null)
{
    Session["AccessToken"] = client.AccessToken = result.access_token;
    dynamic user = client.Get("me", new { fields = "name,username,email" });
    string userName = user.username;

    mu = Membership.GetUser(userName);
    if (mu == null)  // Register
    {
        RegisterModel rm = new RegisterModel();
        rm.Email = user.email;
        rm.UserName = userName;
        return View("Register", rm);
    }
    else
    {
        FormsAuthentication.SetAuthCookie(userName, true);
        return RedirectToAction(MVC.Home.Index());
    }
}
于 2012-11-02T21:55:03.850 に答える