3

我正在尝试使用 Facebook 和 Twitter 实现登录。我让它与 Facebook 合作,但不知道如何与 Twitter 合作。有没有例子?我的 Facebook 实现是这样的:

var auth = new OAuth2Authenticator(
    clientId: "*****************",
    scope: "email",
    authorizeUrl: new System.Uri("https://m.facebook.com/dialog/oauth/"),
    redirectUrl: new System.Uri("http://www.facebook.com/connect/login_success.html"));

StartActivity(auth.GetUI(this));

auth.Completed += (senderFb, eventArgs) =>
{
    if (eventArgs.IsAuthenticated)
    {
        AccountStore.Create(this).Save(eventArgs.Account, "Facebook");

        // Now that we're logged in, make a OAuth2 request to get the user's info.
        var request = new OAuth2Request("GET", new System.Uri("https://graph.facebook.com/me"), null, eventArgs.Account);

        request.GetResponseAsync().ContinueWith(t =>
        {
            if (!t.IsFaulted && !t.IsCanceled)
            {
                var obj = JsonValue.Parse(t.Result.GetResponseText());
                if (obj != null)
                {
                    var user = new UserProfile
                        {
                            FirstName = obj["first_name"],
                            LastName = obj["last_name"],
                            FacebookProfileLink = obj["link"],
                            FacebookToken = eventArgs.Account.Properties["access_token"],
                            Gender = obj["gender"] == "female" ? "Female" : "Male",
                            EmailAddress = obj["email"],
                            DisplayName = obj["name"],
                            Name = obj["name"],
                            LoginName = obj["email"]
                        };
                    SignUpUser(user);
                }
            }
        }, uiScheduler);
    }
};
4

1 回答 1

1

您可以像这样使用 oauth1。

 this.Authenticator = new OAuth1Authenticator (ConsumerKey, ConsumerSecret, RequestTokenUrl, AuthorizeUrl, AccessTokenUrl, DummyCallBackUrl, (IDictionary<string, string> accountProperties) => {
   string screen_name = "";
   if (accountProperties.TryGetValue("screen_name", out screen_name)) {
      Account a = new Account(screen_name, accountProperties);
      AuthenticatorCompletedEventArgs e = new AuthenticatorCompletedEventArgs(a);
      CompleteAuthentication(e);
   }
   return null;
});

twitter api 不完全支持 OAuth2

于 2014-02-24T08:12:11.197 回答