2017-05-23 1 views
-2

사용자 AccessToken을 가져오고 싶습니다.응답 코드를 가져올 수 없습니다.

사용자는 등록/로그인 버튼을 클릭하면 :

  $.ajax({ 
      url: 'Register', 
      type: 'GET', 
      data: { m:true }, 
      contentType: 'application/json; charset=utf-8', 
      success: function (response) { 
       if (response.success) { 
       } else { 
       } 
      }, 
      error: function() { 
      } 
      }); 

내 등록 방법 :

고해상도에서
  Uri uri = new Uri(FacebookHelpers.GetFacebookLoginURL()); 
      var res = await FacebookHelpers.FacebookRequest<object>(uri).ConfigureAwait(false); 

, 난 그 코드를 교환보다 코드를 얻으려면 FacebookRequest 결과 얻을하려는 액세스 토큰.

내 GetFacebookLoginUrl 기능 : 내 FacebookRequest 기능에서

  var redirectUri = "https://www.facebook.com/connect/login_success.html"; 
      var uri = GetUri("https://www.facebook.com/dialog/oauth", 
       Tuple.Create("client_id", FacebookAppId), 
       Tuple.Create("redirect_uri", redirectUri), 
       Tuple.Create("response_type", "code"), 
       Tuple.Create("scope", "public_profile,email"), 
       Tuple.Create("state", Convert.ToString(new Random().Next(9999))) 
       ); 

는 : FacebookRequest 기능을 제공하는 URL에서 코드를 얻을하려고 할 때

 public static async Task<T> FacebookRequest<T>(Uri uri) 
     { 
      string json; 
      using (HttpClient client = new HttpClient()) 
      { 
       json = await client.GetStringAsync(uri).ConfigureAwait(false); 
      } 

      try 
      { 
       var result = JsonConvert.DeserializeObject<T>(json); 
       return result; 
      } 
      catch (JsonException ex) 
      { 
       throw new ArgumentException("Unable to deserialize the Facebook response.", ex); 
      } 
     } 

문제가 나타납니다.

구문 분석하는 동안 예기치 않은 문자가 발생했습니다 : <. 경로 '', 라인 0, 위치 0

Json 응답에는 메소드가 호출 된 곳과 동일한 페이지가 있습니다. FacebookRequest가 코드를 반환하지 않으면 대신 성공을 반환합니다.

아이디어가 있으십니까?

목표 : 데이터베이스에서 사용자를 가져오고 계정을 내 봇과 연결하려고합니다. 또는 사용자가 없으면 먼저 등록하고 봇과 연결하십시오.

+0

실제로'json' 변수에 실제로 무엇이 들어 있는지 확인 했습니까? – CBroe

+0

내 질문을 편집했습니다. 여기에는 메소드가 호출 된 전체 HTML이 포함되어 있습니다 ... –

+1

백그라운드에서 Facebook 로그인 대화 상자를로드 할 수 없습니다. 사용자를 해당 주소로 리디렉션해야합니다. (사용자가 주소 표시 줄을 통해 실제로 피싱 사이트가 아닌 페이스 북에 대한 자격 증명을 입력했는지 확인할 수 있어야한다는 절대적으로 분명한 이유가 있습니다.) – CBroe

답변

1

백그라운드에서 Facebook 로그인 대화 상자를로드 할 수 없습니다. 사용자를 해당 주소로 리디렉션해야합니다. 그것은 사용자의 브라우저에서 호출되어야합니다. 백그라운드에서 시도하고 요청하면 작동하지 않습니다.

코드 또는 액세스 토큰 반환 여부 : 액세스 토큰을 직접 반환하도록 지정할 수 있습니다.이 경우 토큰은 리디렉션 URI의 조각 부분에 전달됩니다. 즉, 클라이언트 측 코드를 사용하여 거기에서 가져옵니다. 이것은 오히려 옵션이 아닙니다. (더 많은 정보가 필요하다면, response_type 매개 변수와 가능한 값은 https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow#logindialog입니다.

+0

한 번 더 감사드립니다 :))) –

관련 문제