1

Facebook ID を使用してユーザーを認証しようとしています。そのために、私は彼らの Facebook ID を持っています。登録時にデータベースに保存されます。私はそのためにfacebookのjavascript APIを使用していますが、正常に機能しており、成功した.aspxページからjQuery ajax呼び出しを使用しているユーザーbasci情報を使用して、ユーザーを自分のサイトに戻します

FB.Event.subscribe('auth.statusChange', function (response) {
if (response.authResponse) {                                                                                       FB.api('/me?email?dob', function (me) {                                                   if (me.name) {                                                       
   emid = me.email;
   $.ajax({
           url: 'index.aspx/checkuser',
           type: 'POST',
           contentType: 'application/json',
           data: JSON.stringify({ eid: emid }),
}
})
});

上記のコードは私のmasterpage.aspxにあり、静的メソッドである私のコードの背後にあるwebMethodにあります

[WebMethod]
    public static void checkuser(string eid)
    {
        checkFBDB objChk = new checkFBDB();
        objChk.isFBIDExists(eid);


    }

このコードはコンテンツ ページ index.aspx にあり、そのメソッド内でクラス オブジェクトを作成してクラス関数を呼び出しています public class checkFBDB : System.Web.UI.Page {

    public void isFBIDExists(string fbID)
    {

        string cnString = string.Empty;

        cnString = ConfigurationManager.ConnectionStrings["connectionString"].ToString();

            SqlDataReader dR = SqlHelper.ExecuteReader(cnString,
         CommandType.Text, "SELECT * FROM smsUsers WHERE fbA='" + fbID + "' ");

            if (dR.Read())
            {

                Session["userName"] = dR["userName"].ToString();
                Session["smsCredit"] = int.Parse(dR["SMSCredit"].ToString());
                Session["sender"] = dR["FName"].ToString();
                Session["userMob"] = dR["MobileNo"].ToString();
                HttpContext.Current.Server.Transfer("AuthenticatedForms/sendMessage.aspx");

            }

            else
            {
                HttpContext.Current.Server.Transfer("~/mapFBID.aspx",true);
            }
       }
}

データベースとの接続を開き、提供された Facebook ID を持つユーザーが DB に存在するかどうかを確認します。私はこのステートメントを使用していますが、問題は、通常のページから同じステートメントを使用すると問題なく転送されますが、このコードクラスからは、デバッグモードで見たすべての操作を実行しますが、Web メソッドがあった場所からページに戻ってきます。制御を移すためにこのコードクラスを呼び出しています。マスターページを使用しています。Visual Studio 2010、バックエンドは SQL SERVER 2000 です。以下は私のコードです。よろしくお願いいたします。

4

1 に答える 1

1

考慮しなければならないことがいくつかあります。

  1. あなたは AJAX 呼び出しを行っており、成功すると使用をページにリダイレクトしたいと考えています。
  2. Server.Transferターゲット ページのコンテンツを応答ストリームに書き込みますが、これは特に AJAX 呼び出し中にユーザーを別のページに移動させるのに役立ちません。
  3. 実行することはできますResponse.Redirectが、AJAX ロジックは 302 応答を完全に理解していないため、その場合でも機能しません。

SO Question " How to manage a redirect request after a jQuery Ajax call "に従うことをお勧めします

于 2012-10-22T09:57:26.957 に答える