在 facebook c# sdk 的帮助下,我编写了一个 Windows 窗体应用程序,该应用程序连接到 facebook 中的用户个人资料,读取他的墙并在小部件中显示他的更新。
一切正常,除了 facebook 不允许我的用户更改他的凭据,这意味着以不同的用户身份重新登录。
我的身份验证流程示意图如下:
在登录过程初始化程序中:
注意:对话框显示在弹出窗口中。如果您在完整浏览器中显示对话框,则可以注销,但在弹出窗口中似乎缺少此功能。
private void loginButton_Click(object sender, EventArgs e){
browser = new WebBrowser();
this.browser.Navigated += new WebBrowserNavigatedEventHandler(browser_Navigated);
//+ all types of gui settings for the borwser
form.Controls.Add(browser);
Uri url=new Uri("https://www.facebook.com/dialog/oauth?client_id=" + {*MyAppsId*}+
"&redirect_uri=" + "https://www.facebook.com/connect/login_success.html" +
"&response_type=token"+
"&auth_type=reauthenticate"+
"&display=popup"+
"&scope=read_stream"
browser.Navigate(url);// +try/catches - omitted
}
导航响应解析:
注意:只需使用 c# sdk 类 FacebookOAuthResult 和 FacebookClient 解析响应
private void browser_Navigated(object sender, WebBrowserNavigatedEventArgs e){
FacebookOAuthResult oauthResult; //helps to streamline parsing
if (fb.TryParseOAuthCallbackUrl(e.Url, out oauthResult)){ //type of fb is FacebookClient of c# sdk
if (oauthResult.IsSuccess){
accessToken = oauthResult.AccessToken;
//from here start reaing user's feed with the help of access token
}
}
}
我的意思是,当单击登录按钮时,会提示用户他的用户名和密码。
但是,仅提示用户重新输入他的密码,而不是重新输入他的用户名。
如果我使用不带参数的 url "&auth_type=reauthenticate"
,它不会提示任何内容,而是直接向我发送访问令牌。
如何强制 Facebook 要求输入用户名?