いつからか分からないのですが、Facebook C# SDKがWindows Phoneで利用出来なくなっています。[セキュア接続]を有効にしているユーザーの場合のみ発生している不具合です。
WebBrowserコントロール上での認証は問題なく通るのですが、残念ながらアクセストークンを取得出来ません。
サンプルコードを実行しても認証が通りませんので、Facebook C# SDKを使用しているWindows Phoneアプリは全滅だと思われます。
ポチポチとステップ実行しなから調べたところ、そもそもアクセストークンを含んだjsonコードが返ってきていない(取得出来ていない)のが分かりました。
既にCodeplexのIssueにも上がっているのですが現時点では対応策がありません。
Hi,
I think, this issue isn't confined to the sample source.
FacebookOAuthClient doesn't support secured login because GetLoginUrl method is using hard-coded non-secured login url.--Source var url = "http://www.facebook.com/dialog/oauth/?" + FacebookUtils.ToJsonQueryString(mergedParameters); --
Thanks.
Project Moved - View Issue #5931: WP sample works only when FB account is not secured
と、思ったら日本語で今回の現象について書かれている方がいました。
Facebook C# SDK(Version5.4.1.0)においてセキュア接続を使用してOAuth認証をするには、FacebookOAuthClientクラスの下記の部分をhttpsに変えてやる必要があります。
GetLoginUrlメソッドのリダイレクトURLを設定している部分(130行目あたり)
defaultParameters["redirect_uri"] = RedirectUri ?? new Uri("https://www.facebook.com/connect/login_success.html");同じくGetLoginUrlメソッドのログインURLを設定している部分(150行目あたり)
var url = "https://www.facebook.com/dialog/oauth/?" + FacebookUtils.ToJsonQueryString(mergedParameters);
ちなみに、CodePlexのIssueTrackerに同じようなIssueがあったのでVoteしてCommentしときました。
TFC Software Blogs - Facebook C# SDKのOAuth認証をセキュア接続設定してるアカウントで使うとエラーになる
うーん、うちの環境だとこの方法を実施してもアクセスキーが取得出来ないんですよねぇ……