如何使用Facebook Connect验证用户?

时间:2013-09-08 19:06:21

标签: asp.net facebook facebook-authentication

我有奇怪的事情,因为当我点击Facebook标签播放我的游戏时,验证消息没有出现,但我必须复制我将游戏放在我们的服务器上的游戏URL,并且验证消息出现并且可以验证然后当我点击Facebook标签它运作良好。那有什么不对?

enter image description here

Facebook_login页面

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        string host = System.Configuration.ConfigurationManager.AppSettings["host"];
        string facebookClientId =
          System.Configuration.ConfigurationManager.AppSettings["FacebookClientId"];
        string RedirectURL = "http://facebookapp.elarabygroup.com";
        if (Request.QueryString["redirectURL"] != null)
        {
            RedirectURL = Request.QueryString["redirectURL"].ToString();
            Session["RedirectURL"] = RedirectURL;
        }
        Response.Redirect(@"https://graph.facebook.com/oauth/authorize?client_id=" +
          facebookClientId + "&redirect_uri=http://" + host +
          @"/FBcallback.aspx&scope=publish_stream,offline_access,publish_actions");
    }
}

FBcallback页面

protected void Page_Load(object sender, EventArgs e)
{

    if (Request.QueryString["code"] != null)
    {

        string facebookClientId = System.Configuration.ConfigurationManager.AppSettings["FacebookClientId"];
        string facebookSecret = System.Configuration.ConfigurationManager.AppSettings["FacebookSecret"];
        string host = System.Configuration.ConfigurationManager.AppSettings["host"];
        string code = Request.QueryString["code"];

        var url = 
            string.Concat("https://graph.facebook.com/oauth/access_token?client_id=" + facebookClientId,"&redirect_uri=http://" + host + "/admin/facebook/auth.aspx","&client_secret=" + facebookSecret,"&code=" + code);

        oAuthFacebooks fbAC = new oAuthFacebooks();
        string respnse = "";
        try
        {
            fbAC.AccessTokenGet(code);
            respnse = fbAC.Token;
        }
        catch (Exception ex)
        {
            Response.Redirect("http://x/SiteLogin.aspx?error=" + ex.Message);
        }

        if (Session["RedirectURL"] != null && Session["RedirectURL"].ToString() != "")
        {
            Response.Redirect(Session["RedirectURL"].ToString() + "?token=" + respnse + "&source=FB");
        }
        else
        {
            Response.Redirect("http://x/SiteLogin.aspx?token=" + respnse);
        }

    }
    else
    {
        Response.Redirect("http://x/SiteLogin.aspx?error=code not found" +
                       Request.QueryString["error_reason"].ToString());
    }

}

sitelogin页面

if (Request.QueryString["token"] != null)
    {
        string token = Request.QueryString["token"];

        string PostURL = string.Format("https://graph.facebook.com/me?access_token={0}", token);
        oAuthFacebooks objFbCall = new oAuthFacebooks();
        string JSONInfo = objFbCall.WebRequest(oAuthFacebooks.Method.GET, PostURL, "");

        JObject Job = JObject.Parse(JSONInfo);
        JToken Jdata = Job.Root;

        //added from other soluation
       // string code = Request.QueryString["code"];

        if (Jdata.HasValues)
        {
            //added from other soluation
            /*string data = FaceBookConnect.Fetch(code, "me");
            FaceBookUser faceBookUser = new JavaScriptSerializer().Deserialize<FaceBookUser>(data);*/

            string UID = (string)Jdata.SelectToken("id");
            string firstname = (string)Jdata.SelectToken("first_name");
            string lastname = (string)Jdata.SelectToken("last_name");

            string pic = string.Format("https://graph.facebook.com/{0}/picture", UID);


            string username = firstname + " " + lastname;

           userdata.Attributes.Add("Value", "fb_id="+UID+ "&fb_name="+username+"&fb_img=" + pic);
           userdata2.Attributes.Add("Value", "fb_id=" + UID + "&fb_name=" + username + "&fb_img=" + pic);


        }

    }
    else

    { Response.Write(" xx"); }
}

1 个答案:

答案 0 :(得分:0)

实际上这个问题并不是很清楚......我正在黑暗中拍摄。

以下是facebook登录流程的方式..

  • 连接。此人已登录Facebook,并已登录 你的应用。   
    (*我认为当你从facebook标签转到你的应用程序时就是这种情况。每当用户通过facebook访问任何应用程序时,如果用户登录fb并且用户从另一个用户获取应用程序,则他们会自动连接浏览器选项卡。您将无法连接,但将处于以下描述的not_authorised状态。如果用户未获得授权,则需要再次登录您的应用程序*)

  • NOT_AUTHORIZED。该人登录Facebook,但尚未登录 登录到您的应用。   
    我认为通过您在浏览器中指定的网址而不是通过Facebook标签转到您的应用时就是这种情况

  • 未知。此人未登录Facebook,因此您不知道是否 他们已登录您的应用。

以下是documentation了解详情...

PS:确保该图片上指定的网址与您的应用程序上的网址完全相同。