【问题标题】:Twitter oauth not working on AzureTwitter oauth 在 Azure 上不起作用
【发布时间】:2018-08-20 16:29:08
【问题描述】:

我已经使用 Azure 后端构建了一个移动应用程序,并且我正在通过 Google、Facebook、Microsoft 和 Twitter 授权用户。除了 Twitter,所有这些都可以正常工作。

我的授权(在后端)是这样完成的:

 [Authorize]
public class AuthenticationController : ApiController 
{

    [HttpGet, Route("api/getUserIdentity")]
    public async Task<string> GetUserIdentity()
    {

        string requestUrl = "";
        string userID = "";

        try
        {
            FacebookCredentials credentials = await User.GetAppServiceIdentityAsync<FacebookCredentials>(Request);
             requestUrl = "https://graph.facebook.com/me?access_token="
                + credentials.AccessToken;
            userID = credentials.UserId;
        }
        catch (Exception) { } //if it is not facebook, will throw an exception here
        if (requestUrl == "")
        {
            try
            {
                TwitterCredentials credentials = await User.GetAppServiceIdentityAsync<TwitterCredentials>(Request);
                requestUrl = " https://api.twitter.com/oauth/access_token="
                    + credentials.AccessToken;
                userID = credentials.UserId;
            }
            catch (Exception) { }
        }
        if (requestUrl == "")
        {
            try
            {
                GoogleCredentials credentials = await User.GetAppServiceIdentityAsync<GoogleCredentials>(Request);
                requestUrl = "https://www.googleapis.com/oauth2/v3/userinfo?access_token="
                    + credentials.AccessToken;
                userID = credentials.UserId;
            }
            catch (Exception) { }
        }

        if (requestUrl == "")
        {
            try
            {
                MicrosoftAccountCredentials credentials = await User.GetAppServiceIdentityAsync<MicrosoftAccountCredentials>(Request);
                requestUrl = "https://apis.live.net/v5.0/me/?method=GET&access_token="
                    + credentials.AccessToken;
                userID = credentials.UserId;
            }
            catch (Exception) { }
        }
        if (requestUrl != "")
        {
            try
            {
                // Create an HttpClient request.
                var client = new System.Net.Http.HttpClient();

                // Request the current user info from Google.
                var resp = await client.GetAsync(requestUrl);

我返回的凭据对象是有效的,带有 UserID 和 AccessToken。

当我使用 Twitter 请求 URL 调用 GetAsync(...) 时,我收到 404(未找到)异常。为了更好地衡量,我尝试了 twitter 给你的所有 URL,但结果相同。但所有其他身份验证提供程序都可以正常工作。

我已将 twitter API 密钥和机密正确放入 Azure 门户(任何地方都没有空格),并将 Twitter 应用程序访问级别设置为读取、写入和直接消息。 Twitter 帐户的用户名和密码是有效的,因为我可以从初始登录屏幕直接进入 Twitter 帐户。

由于这适用于所有其他身份验证提供程序,因此我必须在这里遗漏一些东西。任何帮助表示赞赏。

【问题讨论】:

    标签: azure twitter oauth


    【解决方案1】:

    经过更详细的研究,从 Twitter 获取用户数据似乎比从其他身份验证提供商处获取更复杂。

    This link 解释如何做到这一点

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-24
      • 2012-03-08
      • 2013-05-13
      • 2018-02-22
      • 1970-01-01
      • 2015-09-02
      • 2011-01-15
      • 1970-01-01
      相关资源
      最近更新 更多