Azure mobileserviceclient登录返回身份验证错误(401)

时间:2016-04-18 04:10:03

标签: android azure azure-mobile-services

我目前有一个登录流程,Facebook正在100%工作,我刚刚将谷歌添加到等式中。我编写了代码,以便我的Google提供程序令牌的格式化和缓存方式与我的facebook令牌相同。我的代码获取了facebook和google令牌并执行了后续操作:(以下示例适用于Google登录):

        USER_GOOGLE_TOKEN = new JsonObject();
        USER_GOOGLE_TOKEN.addProperty("access_token", accessToken);
        cacheProviderToken(USER_GOOGLE_TOKEN.toString());
        setCurrentProvider("google");

然后,在我的活动中的身份验证方法中,这里是我如何mobileserviceclient.login:

 MobileServiceAuthenticationProvider provider = null;
        if (getCurrentProvider().equals("facebook")){
            provider = MobileServiceAuthenticationProvider.Facebook;
        } else if (getCurrentProvider().equals("google")) {
            provider = MobileServiceAuthenticationProvider.Google;
        }


        token.addProperty("access_token", googleToken);
        ListenableFuture<MobileServiceUser> mLogin = mClient.login(MobileServiceAuthenticationProvider.Google, getProviderToken());

问题在于Facebook的运作方式和谷歌未经授权生产401。 我得到的具体错误(在将来返回失败之前)是:W / DefaultRequestDirector:`身份验证错误:无法响应任何这些挑战:{}。 Azure日志显示它是未经授权的401。

我成功打印了Google-Sign-In令牌,并在尝试使用它们之前以与我的facebook令牌相同的方式对其进行格式化。我的谷歌键是错的吗?我已经重新生成了一次,我尝试将原始设置为https,我尝试了不同的关键组合,我甚至摆脱了我的google-services.json(显然它不需要)。我没有使用this google doc上生成的客户端密钥。

此处的另一个问题是我的Azure移动应用程序的身份验证设置如何发挥作用?我在从MobileService迁移到MobileApp之前最初配置了我的facebook,现在我不需要使用“turnkey authentication”功能来实现它。我继续进入我的应用程序密钥和facebook的秘密,但无论是否启用它肯定都有效。这是oauth的必要特征吗?

此外,根据登录时的令牌格式和AU身份验证功能的开/关状态,错误:W/DefaultRequestDirector: Authentication error: Unable to respond to any of these challenges: {} ,关于天蓝色端点的大括号中会有一些文字。

非常感谢你能提供帮助。这里有一个挑剔的问题。

1 个答案:

答案 0 :(得分:2)

App Service身份验证/授权与迁移的移动服务不兼容,必须保持关闭状态。

要使用迁移的移动服务更新身份验证设置,请设置应用设置。对于Facebook,MS_FacebookAppIDMS_FacebookAppSecret。对于Google,MS_GoogleClientIDMS_GoogleClientSecret

供参考,请查看https://azure.microsoft.com/en-us/documentation/articles/app-service-mobile-migrating-from-mobile-services/#authentication