2013-10-18 1 views
0

가 성가 시게 나는 많은 시간 동안이 문제를 해결하기 위해 노력 해왔다, 모든 대답은 직접적인 솔루션입니다 나는 이것을 위해 페이스 북 비누 클라이언트를 사용 중이다. http://pastebin.com/G7ysgbdX페이스 북의 OAuth 문제 MVC4

이렇게하면 타임 라인을 (사용자의 권한으로) 통합 할 수 있습니다. 페이스 북은 URL이 일치하지 않는다고 말하고있다. 어떻게 테스트합니까?

이 localhost 대신 http://free-rsvp.com/ 제외하고는 동일한 코드를 사용하여 서버에 로컬하지만 작동 : 53111은/

이 아래의 URL입니다. 나는 틀린 무엇이라도 볼 수 없다!

모든 조언을 주시면 감사하겠습니다.

provider_ %의 3dFacebookPro %의 26_ SID _ % 3da80359b555c54b8f8d2f4f8e803f9125 & client_secret = 212360b3ea6478fd0a0491e736b54256 & 코드 = AQCyTDStiB5gsQpKMx4uI1yFesVnLnWfE3u70VsB02-4HSyUCTbcf_3oHMo7QQI2as_pw1tpFONs8tClq4FxCr4AzuCMzLBsRnyOM3dcattTATdU-ahq5cjr4lPJNp2gkTrpgWUmqDEVQ8PBvYFB1LdWJpojxRIC24lv0GkQSSqdrct41UGHfDjhnPfI1mV945NgVJSfebhJP7O0GWxP9o9g_4svDCKa2LtCRbo7nDfWLeiE9fGULhmuJDjefAFZ5VMiYj8SrA4QtZXIu8jUQSQT89VYEP8PuG2hS_wMr0TL_GmcvEhNzQ8psPpPWFYhmSo "> https://graph.facebook.com/oauth/access_token?client_id=523007704381837 & redirect_uri로 = HTTP % 3a % 2f % 2ffree-rsvp.com % 3a80 % 2fAccount % 2fExternalLoginCallback % 3fReturnUrl % 3d % 252F 대시 보드 % 26_ 공급자 % 3dFacebookPro % 26_ 01 2,385,SID _ % 3da80359b555c54b8f8d2f4f8e803f9125 & client_secret = 212360b3ea6478fd0a0491e736b54256 & 코드 = AQCyTDStiB5gsQpKMx4uI1yFesVnLnWfE3u70VsB02-4HSyUCTbcf_3oHMo7QQI2as_pw1tpFONs8tClq4FxCr4AzuCMzLBsRnyOM3dcattTATdU-ahq5cjr4lPJNp2gkTrpgWUmqDEVQ8PBvYFB1LdWJpojxRIC24lv0GkQSSqdrct41UGHfDjhnPfI1mV945NgVJSfebhJP7O0GWxP9o9g_4svDCKa2LtCRbo7nDfWLeiE9fGULhmuJDjefAFZ5VMiYj8SrA4QtZXIu8jUQSQT89VYEP8PuG2hS_wMr0TL_GmcvEhNzQ8psPpPWFYhmSo

편집 페이스 북에 나를 소요되는 URL은 다음과 같습니다

provider_ %의 253DFacebookPro % 2526_ SID,_ 253Dbfe82f104ab34d1aa0f44c477c4d7819 % % % 26scope 3Demail % 252Cuser_likes % 252Cfriends_likes % 252Cuser_birthday % 252Cpublish_checkins % 252Cpublish_stream % 26client_id % 3D523007704381837 % 26ret % & 3Dlogin cancel_uri = HTTP % 3A % 2F % 2Ffree-rsvp.com % 2FAccount % 2FExternalLoginCallback % 3FReturnUrl % 3D % 252FDashboard % 26_ 제공 _ % 3DFacebookPro %의 26_ SID _ % 3Dbfe82f104ab34d1aa0f44c477c4d7819 % 26error % 3Daccess_denied % 26error_code % 3D200 % 26error_description % 3DPermissions % 2Berror % 26error_reason % 3Duser_denied % 23_ % 3D_ & 디스플레이 = 페이지 "> https : //로 WWW. facebook.com/login.php?skip_api_login=1 & api_key = 523007704381837 & signed_next = 1 & 다음 = https % 3A % 2F % 2Fwww.facebook.com % 2Fdialog % 2Foauth % 3Fredirect_uri % 3Dhttp % 253A % 252F % 252Free-rsvp. com % 252FAccou NT % 252FExternalLoginCallback % 253FReturnUrl % 253D % 252FDashboard % 2526_ 제공 _ % 253DFacebookPro % 2526_ SID _ % 253Dbfe82f104ab34d1aa0f44c477c4d7819 % 26scope % 3Demail % 252Cuser_likes % 252Cfriends_likes % 252Cuser_birthday % 252Cpublish_checkins % 252Cpublish_stream % 26client_id % 3D523007704381837 % 26ret % 3Dlogin & cancel_uri = http % 3A % 2F % 2Free-rsvp.COM % 2FAccount % 2FExternalLoginCallback % 3FReturnUrl % 3D %의 252FDashboard % 26_ 제공 _ % 3DFacebookPro %의 26_ SID _ % 3Dbfe82f104ab34d1aa0f44c477c4d7819 % 26error % 3Daccess_denied % 26error_code % 3D200 % 26error_description % 3DPermissions % 2Berror % 26error_reason % 3Duser_denied % 23_ % 3D_ & display = page

+0

사용하여 액세스 토큰에 대한 코드를 교환하는 통화가 'redirect_uri로'http % 3a % 2f % 2ffree-rsvp.com % 3a80 % 2fAccount % 2fExternalLoginCallback % 3fReturnUrl % 3d % 252F 대시 보드 % 26_provider_ % 3dFacebookPro % 26_sid_ % 3da80359b555c54b8f8d2f4f8e803f9125'? 오류 메시지가 명시 적으로 사용자가 아니라고 말하므로 확인해야 할 사항입니다. – Igy

+0

안녕하세요, 어디에서 확인합니까? – CR41G14

+0

안녕하세요 @lgy는 전화 할 url에 대한 편집을 참조하십시오. 나는 그들이 동일하다고 믿는다. – CR41G14

답변

0

여기는 내 서버 측 인증 코드 (MVC4 프로젝트)의 일부입니다. 모두 "AuthorizeCallback를"기능을 "권한 부여"와 - - 동일 - 당신이보고해야하는 부분은 URL이 생성 리디렉션하는 방법과 페이스 북의 클라이언트에 전달 :

[HttpPost] 
public ActionResult Authorize(Guid eventId) 
{ 
    var @event = this.eventRepository.Find(eventId); 

    var redirectUri = ConfigurationProvider.HostingEndpoint + this.Url.Action("AuthorizeCallback", new { eventCode = @event.Code }); 

    var service = new FacebookClient(); 
    var loginUrl = service.GetLoginUrl(new { 
     client_id = ConfigurationProvider.FacebookAppId, 
     client_secret = ConfigurationProvider.FacebookAppSecret, 
     redirect_uri = redirectUri, 
     response_type = "code", 
     scope = "manage_pages, publish_actions, user_photos, publish_stream" // Add other permissions as needed 
    }); 

    return new RedirectResult(loginUrl.AbsoluteUri, permanent: false); 
} 

public ActionResult AuthorizeCallback(string code, string eventCode, UserProfile userProfile) 
{ 
    var @event = this.eventRepository.Find(eventCode); 

    if (string.IsNullOrWhiteSpace(code) == true) 
    { 
     // means user clicked "cancel" when he was prompted to authorize the app 
     // todo: show some error message? or just redirect back? 
     return this.RedirectToAction("Event", "Dashboard", new { eventCode = @event.Code, feature = FeatureType.Update }); 
    } 

    var redirectUri = ConfigurationProvider.HostingEndpoint + this.Url.Action("AuthorizeCallback", new { eventCode = @event.Code }); 

    var fb = new FacebookClient(); 
    dynamic result = fb.Post("oauth/access_token", new 
    { 
     client_id = ConfigurationProvider.FacebookAppId, 
     client_secret = ConfigurationProvider.FacebookAppSecret, 
     redirect_uri = redirectUri, 
     code = code 
    }); 

    var accessToken = result.access_token; 

    // update the facebook client with the access token so 
    // we can make requests on behalf of the user 
    fb.AccessToken = accessToken; 

    // Get the user's information 
    dynamic me = fb.Get("me"); 

    return this.RedirectToAction("Event", "Dashboard", new { eventCode = @event.Code, feature = FeatureType.Update }); 
} 
관련 문제