我需要一些指导。我创建了一个default.aspx
页面,其中显示了用户的名字,但也包含一个重定向到result.aspx
页面onclick
的按钮。似乎每次我点击按钮时都会出现无限循环错误。我应该如何page_load
result.aspx
来完成这项工作?
以下是default.aspx
的代码:
string appId = "xxxxxxxxxxxxxxxxxxx";
string appSecret = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
FacebookCookie cookie = null;
FacebookClient app = new FacebookClient();
FacebookOAuthClient oAuth = new FacebookOAuthClient();
// FacebookWebClient apps = new FacebookWebClient();
FacebookApp apps = new FacebookApp();
string myRedirect_uri = "http://www.mydomain.com";
protected void Page_Load(object sender, EventArgs e)
{
if(apps.Session != null)
//if (IsConnected())
{
display(apps.AccessToken);
}
else
{
Response.Redirect("https://www.facebook.com/dialog/oauth?client_id=" + appId + "&redirect_uri=http://www.mydomain.com&scope=email");
name.Text = "no connected";
}
}
public bool IsConnected()
{
if (cookie == null)
cookie = FacebookCookie.GetCookie(appId, appSecret);
return cookie != null && cookie.UserId != 0 && !string.IsNullOrEmpty(cookie.SessionKey);
}
protected void display(string token)
{
FacebookClient thisclient = new FacebookClient(token);
dynamic dname = thisclient.Get("me");
name.Text = dname.name;
imgProfile.ImageUrl = "http://graph.facebook.com/" + dname.id + "/picture?type=large";
}
protected void btn_Click(object sender, EventArgs e)
{
Response.Redirect("~/resutl.aspx");
}
答案 0 :(得分:0)
此行将在每个请求中实例化:
FacebookApp apps = new FacebookApp();
你意识到了吗?那是你要的吗?
我问,因为你在Page_Load
下来了:
if(apps.Session != null)
这似乎总是正确的,因为apps是一个新的实例,可能是一个新的Session。换句话说,else
上的Page_Load
阻止将永远无法触发。但这不仅仅是这里的重点。
所以在我看来应用程序加载正常,你点击按钮,调用btn_Click
处理程序,用户被重定向到resutl.aspx
,然后result.aspx
必须做导致用户被重定向到default.aspx
的东西,例如,可能检查用户是否经过身份验证。
您使用的是哪种身份验证?