1

다음 코드를 사용하여 facebook graph api oauth 서버로 요청을 보냅니다. 내가 브라우저에서 동일한 URL을 입력하면C#에서 GetResponseStream()으로 '(400) Bad Request 요청하기'

The remote server returned an error: (400) Bad Request. 

한편, 작동 :

public string GetAccessToken(string code) 
    { 
     HttpWebRequest req = (HttpWebRequest) WebRequest.Create(@"https://graph.facebook.com/oauth/access_token?client_id=249725835046216&redirect_uri=http://localhost:2794/&client_secret=APP_SECRETa&code=" + code); 
     HttpWebResponse res = (HttpWebResponse)req.GetResponse(); 
     string response=res.GetResponseStream().ToString(); 
     return response; 
    } 

위의 코드는 다음과 같은 예외가 발생합니다. 제발 도와주세요, 내가 잘못한 곳이 어디 있니?

(PS는 URL, 나는 반드시 비밀 키를 APP_SECRET를 교체하고)

답변

0

당신이 서버의 일부 체크 로직을 만족시키기 위해 사용자 에이전트를 지정해야 대부분의 아마 :

HttpWebRequest req = (HttpWebRequest) WebRequest.Create(@"https://...&code=" + code); 
req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; 

노력이 도움이되는지 확인하십시오.

2

귀하의 쿼리 문자열 매개 변수를 urlencoded를해야합니다

HttpWebRequest req = (HttpWebRequest) WebRequest.Create(@"https://graph.facebook.com/oauth/access_token?client_id=249725835046216&redirect_uri=" + UrlEncode("http://localhost:2794/") + "&client_secret=" + UrlEncode(APP_SECRET) + "&code=" + UrlEncode(code)); 
1

당신은 당신의 URL의 매개 변수를 인코딩해야합니다. 매개 변수 인코딩에 HttpUtility 클래스 을 사용할 수 있습니다.

0

이 나에게 무슨 일이 있었는지와 그 해결 방법입니다 :

  1. 사용자의 클릭을 허용 한 후

    https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL

  2. 로 사용자를 리디렉션, 그것은 히트거야 우리 리디렉션 울리

  3. 그 시점에서 우리는 드 우리는 우리의 OAuth 액세스 토큰을 사용하여 코드를 교환하기 위해 다음 URL에 서버 측 HTTP 가져 오기를 수행해야합니다

https://graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&client_secret=YOUR_APP_SECRET&code=THE_CODE_FROM_ABOVE 지금 3 단계에서, 나는 HTTP 400 점점에 보관 응답 다시.

그래서 약간의 연구 끝에 우리가 step 3에 제출 한 redirect_uri에서 요청한 내용이 유효하다는 것을 알았습니다. 따라서, 상기 값은 요컨대 단계 2.

으로 일치해야

redirect_uri로 모두 step 2step 3

일치해야
관련 문제