2011-01-27 3 views
0

이것은 쉽지만 Facebook C# SDK를 사용하면 등록 플러그인에서 요청한 추가 정보를 어떻게 검색합니까?Facebook 등록 플러그인에서 추가 정보를 어떻게 가져 옵니까?

Favourite_animal 값을 가져 오려고합니다.

다음은 플러그인 용 Java 스크립트입니다.

<script> 
     FB.init({ 
      appId: '123123123123123', cookie: true, 
      status: true, xfbml: true 
     }); 
    </script> 
    <fb:registration 
     fields="[{'name':'name'}, {'name':'email'}, 
     {'name':'Favourite_Animal','description':'What is your favourite animal?', 
     'type':'text'}]" redirect-uri="http://XXXXXX.com/FacebookAuth2/Account/Home"> 
</fb:registration> 

답변

0

확인 나는이 libray에 새로운 오전하지만 당신이 그 값을 검색 할 수 있습니다처럼은 보이지 않는다. 나는 Facebook.dll에 약간의 변경을했다. Face.FacebookSignedRequest 클래스에서 Specifialally 나는 클래스의 생성자로부터 오는이 스 니펫에 마지막 6 행의 코드를 추가했다. 결론은 "등록"공용 속성을 만들고 그 위에있는 줄은 필드에 데이터를 넣습니다.

public FacebookSignedRequest(IDictionary<string, object> value) 
    { 
     this.UserId = value.ContainsKey("user_id") ? (string)value["user_id"] : null; 
     this.AccessToken = value.ContainsKey("oauth_token") ? (string)value["oauth_token"] : null; 
     this.Expires = value.ContainsKey("expires") ? DateTimeConvertor.FromUnixTime(Convert.ToInt64(value["expires"])) : DateTime.MinValue; 
     this.IssuedAt = value.ContainsKey("issued_at") ? DateTimeConvertor.FromUnixTime(Convert.ToInt64(value["issued_at"])) : DateTime.MinValue; 
     this.ProfileId = value.ContainsKey("profile_id") ? (string)value["profile_id"] : null; 
     this.Algorithm = value.ContainsKey("algorithm") ? (string)value["algorithm"] : null; 

     if (value.ContainsKey("user")) 
     { 
      var user = (IDictionary<string, object>)value["user"]; 
      this.User = new FacebookSignedRequestUser 
      { 
       Country = value.ContainsKey("country") ? (string)user["country"] : null, 
       Locale = value.ContainsKey("locale") ? (string)user["locale"] : null, 
      }; 
     } 

     if (value.ContainsKey("registration")) 
     { 
      this.Registration = (IDictionary<string, object>)value["registration"]; 
     } 

    } 
    /// <summary> 
    /// Gets or sets th key value pairs from the Registration plugin input fields. Accessibile even if user chooses not to use Facebook for registration 
    /// </summary> 
    public IDictionary<string, object> Registration { get; set; } 

이제 등록 플러그인에 어떤 필드를 추가 할 수 있으며 이름으로 액세스 할 수 있습니다. 희망적으로 이것은 다른 사람을 도울 것입니다. 더 나은 아이디어를 게시 할 수 있습니다.

FacebookApp app = new FacebookApp(); 

     Authorizer authorizer = new Authorizer(app); 
     if (authorizer.Authorize()) 
     { 
      object returnValue; 
      app.SignedRequest.Registration.TryGetValue("Fovourite_Animal", out returnValue); 
0

페이스 북 C# SDK의 최신 버전을 사용하여 등록 플러그인에서 추가 정보를 검색 할 수 있습니다.

은 간단히 다음과 같이 정적 메소드가 FacebookSignedRequest 클래스 구문 분석 전화 (앱 비밀로하고 서명 요청) :

var DecodedSignedRequest = FacebookSignedRequest.Parse(FacebookContext.Current.AppSecret, SignedRequest); 

지금 당신이 DecodedSignedRequest에 서명 된 요청에서 모든 데이터를 볼 수 있습니다, 등록 플러그인 데이터를 JSON 오브젝트로 포함합니다.

관련 문제