Проблемы при переходе с Facebook SDK v5.4 на alpha v6 - PullRequest
0 голосов
/ 25 февраля 2012

Я использую следующий код после входа в систему, который работал на 5.4.1, но теперь он работает не так, как ожидалось.

FacebookOAuthResult pResult;
if (m_pClient.TryParseOAuthCallbackUrl(e.Uri, out pResult))
{
  if (pResult.IsSuccess)
  {
    //handle if success
  }
  else
  {
  //handle if failed
  }
}

Я перенес FacebookOAuthClient в FacebookClient, и после переноса всего этого не работает.

Мой код входа в систему выглядит следующим образом. Я пробовал и старый, и новый способ, но оба не работают. Закомментированная часть - мой старый код, который работал для 5.4. Можете ли вы помочь мне понять, что я делаю неправильно?

//Dictionary<string, object> pParameters = new Dictionary<string, object> 
//{
// {"response_type", "token"},
// {"display", "touch"},
//};
//if ((extendedPermissions != null) && (extendedPermissions.Length > 0))
//{
// StringBuilder pScope = new StringBuilder();
// pScope.Append(string.Join(",", extendedPermissions));
// pParameters["scope"] = pScope.ToString();
//}

это код, добавленный для v6

Uri pLoginUrl = m_pClient.GetLoginUrl(new { response_type = "token", display = "touch", scope = "publish_stream, offline_access", next = "https://www.facebook.com/connect/login_success.html" }); //also tried redirect_uri=""
m_pBrowser.Visibility = System.Windows.Visibility.Visible;
m_pBrowser.Navigate(pLoginUrl);

1 Ответ

2 голосов
/ 26 февраля 2012

Я бы порекомендовал вам посмотреть образец winforms на https://github.com/facebook-csharp-sdk/facebook-winforms-sample

    private Uri GenerateLoginUrl(string appId, string extendedPermissions)
    {
        dynamic parameters = new ExpandoObject();
        parameters.client_id = appId;
        parameters.redirect_uri = "https://www.facebook.com/connect/login_success.html";

        // The requested response: an access token (token), an authorization code (code), or both (code token).
        parameters.response_type = "token";

        // list of additional display modes can be found at http://developers.facebook.com/docs/reference/dialogs/#display
        parameters.display = "popup";

        // add the 'scope' parameter only if we have extendedPermissions.
        if (!string.IsNullOrWhiteSpace(extendedPermissions))
            parameters.scope = extendedPermissions;
        var fb = new FacebookClient();
        // when the Form is loaded navigate to the login url.
        return fb.GetLoginUrl(parameters);
    }
...