2016-08-22 5 views
0

Facebook에서 거부 된 권한을 다시 요청하고 있습니다.Xamarin.Auth로 Facebook 권한을 다시 확인하십시오.

페이스 북 개발자에 따르면 누군가가 허가를 거부하면 거부 된 권한을 다시 묻는 대화 상자에 명시 적으로 말하지 않는 한 로그인 대화 상자에서 다시 권한을 요청하지 않습니다.

로그인에 auth_type=rerequest 매개 변수를 추가하면됩니다.

나는이 만들었지 만, 작업

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()); ... 

답변

0

나던 나는 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"));