У меня возникла эта крайне неприятная проблема с 5.1.1 Facebook C # SDK.Я успешно загрузил CSSilverlightFacebookApp и подтвердил, что мои настройки Facebook в порядке.Мне удалось заставить тестовое приложение отображаться.
В моем сценарии хостинга я использую следующий пример Google App Engine:
def load_signed_request(signed_request):
"""Load the user state from a signed_request value"""
global APP_ID, APP_SECRET
try:
sig, payload = signed_request.split(u'.', 1)
sig = base64_url_decode(sig)
data = json.loads(base64_url_decode(payload))
expected_sig = hmac.new(
APP_SECRET, msg=payload, digestmod=hashlib.sha256).digest()
# allow the signed_request to function for upto 1 day
if sig == expected_sig and \
data[u'issued_at'] > (time.time() - 86400):
return (data, data.get(u'user_id'), data.get(u'oauth_token'))
except ValueError, ex:
pass # ignore if can't split on dot
class MainHandler(webapp.RequestHandler):
def post(self):
global APP_ID, APP_SECRET
(ignore, ignore, oauth_token) = load_signed_request(self.request.get('signed_request'))
if oauth_token:
path = os.path.join(os.path.dirname(__file__), 'templates/silverlight.html')
params = dict(access_token=oauth_token)
self.response.out.write(template.render(path, params))
Этот код работает нормально,Я получаю oauth_token в мой код Silverlight.Код ниже работает до последней строки:
var token = "";
if (App.Current.Resources.Contains("token") && App.Current.Resources["token"] != null)
token = App.Current.Resources["token"].ToString();
if (!string.IsNullOrEmpty(token))
{
fb = new FacebookClient(token);
fb.GetCompleted += (o, args) =>
{
if (args.Error == null)
{
var result = (IDictionary<string, object>)args.GetResultData();
//Dispatcher.BeginInvoke(() => InfoBox.ItemsSource = result);
}
else
{
// TODO: Need to let the user know there was an error
//failedLogin();
}
};
// Making Facebook call here!
fb.GetAsync("/me");
}
На fb.GetAsync ("/ me") я получаю исключение TypeLoadException, сказав, что не может найти HttpUtility:
System.TypeLoadException was unhandled by user code
Message=Could not load type 'System.Net.HttpUtility' from assembly 'System.Windows, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'.
StackTrace:
at FluentHttp.HttpHelper.UrlEncode(String s)
at Facebook.FacebookUtils.GetUrl(IDictionary`2 domainMaps, String name, String path, IDictionary`2 parameters)
at Facebook.FacebookClient.GetUrl(String name, String path, IDictionary`2 parameters)
at Facebook.FacebookClient.BuildRootUrl(HttpMethod httpMethod, String path, IDictionary`2 parameters)
at Facebook.FacebookClient.PrepareRequest(String path, IDictionary`2 parameters, HttpMethod httpMethod, Stream& input, IDictionary`2& mediaObjects)
at Facebook.FacebookClient.ApiAsync(String path, IDictionary`2 parameters, HttpMethod httpMethod, Object userToken)
at Facebook.FacebookClient.GetAsync(String path, IDictionary`2 parameters, Object userToken)
at Facebook.FacebookClient.GetAsync(String path, IDictionary`2 parameters)
at Facebook.FacebookClient.GetAsync(String path)
at TicTacToe10.Page.Page_Loaded(Object sender, RoutedEventArgs e)
at MS.Internal.CoreInvokeHandler.InvokeEventHandler(Int32 typeIndex, Delegate handlerDelegate, Object sender, Object args)
at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)
InnerException:
Я подтвердил, что включил System.Windows.dll и System.Net.dll.В чем может быть проблема?Мне кажется, что мой код в точности похож на пример CSFacebookSilverlightApp.Я также подумал, что это может быть связано со мной, используя Silverlight 3 вместо 4, но я попробовал все комбинации 3 и 4 с Facebook.dll для sl3 и sl4.