我正在尝试重新请求被拒绝的Facebook权限。
根据facebook开发者的说法,一旦有人拒绝了一个权限,登录对话框将不会重新要求他们,除非你明确地告诉对话框你正在重新请求被拒绝的权限。
您可以通过将auth_type=rerequest
参数添加到您的Login来实现这一点。
我做了这个,但是不工作
var auth = new OAuth2Authenticator(
clientId: "my app id", // your OAuth2 client id
scope: "email", // the scopes for the particular API you're accessing, delimited by "+" symbols
authorizeUrl: new Uri("https://m.facebook.com/dialog/oauth/"),
redirectUrl: new Uri("http://www.facebook.com/connect/login_success.html"));
progressDialog.Show();
auth.Completed += async (sender, eventArgs) =>
{
if (eventArgs.IsAuthenticated)
{
var accessToken = eventArgs.Account.Properties["access_token"].ToString();
var expiresIn = Convert.ToDouble(eventArgs.Account.Properties["expires_in"]);
var expiryDate = DateTime.Now + TimeSpan.FromSeconds(expiresIn);
IDictionary<string, string> hashRequest = new Dictionary<string, string>();
hashRequest.Add("auth_type", "rerequest");
var request = new OAuth2Request("GET", new Uri("https://graph.facebook.com/me?fields=education,email,location,name"),hashRequest, eventArgs.Account);
var response = await request.GetResponseAsync();
var obj = JObject.Parse(response.GetResponseText()); ...
解决了在html请求中添加一些属性的问题。
var auth = new OAuth2Authenticator (
clientId: "myappid", // your OAuth2 client id
scope: "email", // the scopes for the particular API you're accessing, delimited by "+" symbols
authorizeUrl: new Uri ("https://m.facebook.com/dialog/oauth?auth_type=rerequest&client_id=myappid&" +
"redirect_uri=http://www.facebook.com/connect/login_success.html&scope=email/"),
redirectUrl: new Uri ("http://www.facebook.com/connect/login_success.html"));