gpt4 book ai didi

twitter - 如何在 .NET 中从经过身份验证的 Twitter oauth_token 注册/登录解析用户?

转载 作者:行者123 更新时间:2023-12-04 15:34:29 25 4
gpt4 key购买 nike

我用过OAuth1Authenticator来自 Xamarin.Auth component library 的类(class)允许用户通过 Twitter 登录。它正确地进行身份验证并得到一个响应,其中包含以下内容:oauth_token、oauth_token_secret、user_id、screen_name、oauth_consumer_key、oauth_consumer_secret。

这是我的代码

OAuth1Authenticator twitterAuthenticator = new OAuth1Authenticator(Constants.Twitter.CONSUMER_KEY, Constants.Twitter.CONSUMER_SECRET, new Uri(Constants.Twitter.REQUEST_TOKEN_URL), new Uri(Constants.Twitter.AUTHORIZE_URL), new Uri(Constants.Twitter.ACCESS_TOKEN_URL), new Uri(Constants.Twitter.CALLBACK_URL));

twitterAuthenticator.Completed += async (sender, e) =>
{
if (!e.IsAuthenticated)
{
return;
}

string oauth_token = e.Account.Properties["oauth_token"].ToString();

问题是我如何使用该响应来注册/登录 Parse User ?即,我希望通过 Twitter token 在解析数据库上创建 ParseUser,并且应该处理 session ,它与 sign-via-Facebook using ParseFacebookUtils class 的工作方式相同。

问题是 Parse 在 Xamarin 中不支持通过 Twitter 登录,但是,我相信 parse 确实以如下所示的替代方式支持任何类型的 3rd 方身份验证,但我不知道该怎么做。

这是最相关的链接

https://parse.com/tutorials/adding-third-party-authentication-to-your-web-app但是这个链接中的问题是它是作为网页按钮制作的,不知道如何在移动设备上使用它,它是用于 GitHub 的,不知道如何将它用于 Twitter(Twitter 只是 OAuth1)

http://blog.parse.com/2013/12/03/bring-your-own-login/这正是我需要的,但它需要一个 session token ,不适用于 twitter 回复我的 oauth_tokens,因此不知道如何使用链接中提到的方法

https://github.com/auth0/rules/blob/master/parse.md这看起来像是解决方案,但是我不知道如何使用它,它确实显示了 twitter 图标,因此它应该与 twtiter 一起使用,但我如何让它在 .NET 中工作更新:我找到了这个 xamarin 组件 http://components.xamarin.com/view/Auth0Client这让我更接近使用本段第一个链接中提到的方法,但我仍然迷路并且不知道如何链接 autho0 来解析

总而言之,我迷失在这个迷宫中,真的希望有人能帮助我。

最佳答案

我没有 Twitter 帐户,所以我无法对此进行测试,但看起来您的 POST DTO 是这样的:

public class TwitterAuthRequest
{
public AuthData authData { get; set; }
}

public class Twitter
{
public string id { get; set; }
public string screen_name { get; set; }
public string consumer_key { get; set; }
public string consumer_secret { get; set; }
public string auth_token { get; set; }
public string auth_token_secret { get; set; }
}

public class AuthData
{
public Twitter twitter { get; set; }
}

使用这样的响应 DTO:
public class TwitterAuthResponse
{
public string username { get; set; }
public string createdAt { get; set; }
public string updatedAt { get; set; }
public string objectId { get; set; }
public string sessionToken { get; set; }
public AuthData authData { get; set; }
}

public class Twitter
{
public string id { get; set; }
public string screen_name { get; set; }
public string consumer_key { get; set; }
public string consumer_secret { get; set; }
public string auth_token { get; set; }
public string auth_token_secret { get; set; }
}

public class AuthData
{
public Twitter twitter { get; set; }
}

不要忘记放入标题:
("X-Parse-Application-Id", ApplicationId)
("X-Parse-REST-API-Key", ApplicationKey)

来源: https://parse.com/docs/rest#users

编辑:

我为您如何使用 DTO 创建了一个草稿:
public static class TwitterLoginProvider
{
public static Task<ServiceResponse<TwitterAuthResponse>> Login(
Twitter twitterInfo,
string applicationId,
string apiKey,
IRestClient restClient)
{
var request = new TwitterAuthRequest ()
{
authData = new AuthData ()
{
twitter = twitterInfo
}
};

restClient.AddHeader ("X-Parse-Application-Id", applicationId);
restClient.AddHeader ("X-Parse-REST-API-Key", apiKey);

return restClient.PostAsync<TwitterAuthResponse>("https://api.parse.com/1/users", request, Format.Json);
}
}

当你从 Xamarin.Auth 获得响应时,使用该信息创建一个 Twitter 对象并将其传递给 IRestClient。作为来自服务的响应,您将收到包含 session 信息的响应。

IRestClient 接口(interface): https://github.com/sami1971/SimplyMobile/blob/master/Core/SimplyMobile.Web/IRestClient.cs

示例实现: https://github.com/sami1971/SimplyMobile/blob/master/Core/SimplyMobile.Web/RestClient.cs

或者,您可以使用 RestSharp: http://restsharp.org/

关于twitter - 如何在 .NET 中从经过身份验证的 Twitter oauth_token 注册/登录解析用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21653507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com