0

Facebookログインの使用方法に関するこの優れたガイドに従いました。を取得するために少し変更しました

response.authResponse.accessToken

したがって、この直後:

// listen for and handle auth.statusChange events
FB.Event.subscribe('auth.statusChange', function(response) {
if (response.authResponse) {

この行を追加しました:

var accessToken = response.authResponse.accessToken;

現在、この JavaScript の accessToken 変数をサーバー側の C# コードに渡す方法が見つかりません。

私が望むのは、Page_Load() イベントで、accessToken が存在するかどうかを確認することです。はいの場合、「Login with Facebook」div は表示されないため、サーバー側のコードからアクセス トークンを使用することができます。

ユーザーが現在ログインしていない場合は、Facebook でログインしてから、ページのサーバー側コードでアクセス トークンを受け取るようにします。

誰でもこれを行う方法を知っていますか?

助けてくれてありがとう、私はこれについて頭がおかしくなっています。

PS。ユーザーがログインしたら、別のページにリダイレクトしたくありません。ユーザーがログインしていることをページに知らせて、ここからサーバー側のコードに進むようにしたいだけです。

4

1 に答える 1

2

私の意見では、Facebook ログインを実装する最善の方法は、すべての機能をサーバー側で実行することです。Hammock などの REST ライブラリを使用すると、これを実現できます。

実装方法に関する非常に役立つ記事は次のとおりです

そのリンクに加えて、正しい方向を示すコードがいくつかあります。

ログインページ

次のクリック イベントを使用して、このログイン ページに ASP.NET ボタンを追加します。

protected void FacebookLogin_Click(object sender, EventArgs e)
{
        string fbOuthUrl = "https://graph.facebook.com/oauth/authorize?client_id=<client-id>&redirect_uri=<callback-page-url>&scope=email,publish_actions";

        Response.Redirect(fbOuthUrl);        
}

コールバック ページ

ボタン クリック イベントで見たように、redirect_uriはコールバック ページを指します。このコールバック ページは、アクセス トークンを取得するためのすべての機能と、実行する必要があるその他のログイン ジョブを実行します。

public partial class FBLoginCallback : System.Web.UI.Page
{
    private string AccessToken;

protected void Page_Load(object sender, EventArgs e)
{
    if (!String.IsNullOrEmpty(Request["code"]) && !Page.IsPostBack)
    {
        FacebookCallback();
    }
}

private void FacebookCallback()
{
    var client = new RestClient { Authority = "https://graph.facebook.com/oauth/" };
    var request = new RestRequest { Path = "access_token" };

    request.AddParameter("client_id", ConfigurationManager.AppSettings["facebook.appid"]);
    request.AddParameter("redirect_uri", ConfigurationManager.AppSettings["facebook.login.callbackurl"]);
    request.AddParameter("client_secret", ConfigurationManager.AppSettings["facebook.appsecret"]);
    request.AddParameter("code", Request["code"]);

    RestResponse response = client.Request(request);
    // A little helper to parse the querystrings.
    StringDictionary result = QueryStringHelper.ParseQueryString(response.Content);

    AccessToken = result["access_token"];

    SetUserInformation(AccessToken);
}

    private void SetUserInformation(string sToken)
    {
        var client = new RestClient { Authority = "https://graph.facebook.com/" };
        var request = new RestRequest { Path = "me" };
        request.AddParameter("access_token", sToken);   //Make use of the access token
        RestResponse response = client.Request(request);

        JavaScriptSerializer ser = new JavaScriptSerializer();
        var parsedResult = ser.Deserialize<Facebook>(response.Content); //parsedResult will contain basic FB User info

    //Redirect to the necessary page
        Response.Redirect("/Default.aspx");
    }
}

: これには、私の投稿の冒頭で指摘したように、Hammock REST ライブラリを使用する必要があります。

これが役立つことを願っています。

于 2013-01-03T09:03:22.983 に答える