public static Uri GetLoginUrl(string appId, Uri redirectUri, string[] extendedPermissions, bool logout, IDictionary<string, object> loginParameters)
{
Contract.Requires(!string.IsNullOrEmpty(appId));
Contract.Ensures(Contract.Result<Uri>() != null);
var oauth = new FacebookOAuthClient { AppId = appId, RedirectUri = redirectUri };
var defaultLoginParameters = new Dictionary<string, object>
{
{ "response_type", "code" }, // make it "code" by default for security reasons.
#if WINDOWS_PHONE
{ "display", "touch" }
#else
{ "display", "popup" }
#endif
};
if (extendedPermissions != null && extendedPermissions.Length > 0)
{
defaultLoginParameters["scope"] = string.Join(",", extendedPermissions);
}
var mergedLoginParameters = FacebookUtils.Merge(defaultLoginParameters, loginParameters);
var loginUrl = oauth.GetLoginUrl(mergedLoginParameters);
Uri navigateUrl;
if (logout)
{
var logoutParameters = new Dictionary<string, object>
{
{ "next", loginUrl }
};
navigateUrl = oauth.GetLogoutUrl(logoutParameters);
}
else
{
navigateUrl = loginUrl;
}
return navigateUrl;
}