私は、facebook のユーザーのプロファイルに接続し、彼の壁を読み取り、facebook c# sdk の助けを借りてウィジェットで更新を表示する Windows フォーム アプリケーションを作成します。
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にユーザー名を要求させるにはどうすればよいですか?