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

标签 android azure azure-mobile-services

我目前的 facebook 登录流程 100% 正常工作,我刚刚将 Google 添加到了方程式中。我编写了代码,以便我的 google 提供商 token 的格式和缓存方式与我的 facebook token 相同。我的代码获取 facebook 和 google token 并执行以下操作:(以下示例用于 google 登录):

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

然后,在 Activity 中的身份验证方法中,以下是我的 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 有效,而 Google 产生了未经授权的 401。 我收到的具体错误(在未来返回失败之前)是:W/DefaultRequestDirector:`身份验证错误:无法响应这些挑战中的任何一个:{}。 Azure 日志显示这是未经授权的 401。

在尝试使用 Google 登录 token 之前,我已成功打印 Google 登录 token 并按照与 Facebook token 相同的方式对其进行格式化。我的谷歌 key 有误吗?我已经重新生成了它们一次,并且尝试将origins设置为https,尝试了不同的组合键,甚至摆脱了我的google-services.json(显然不需要)。我没有使用 this google doc 上生成的客户端 key .

这里的另一个问题是我的 Azure 移动应用程序的身份验证设置如何发挥作用?在从 MobileService 迁移到 MobileApp 之前,我最初已经配置了 facebook,现在我不需要使用“统包身份验证”功能来使其工作。我继续输入我的应用程序 key 和 Facebook 的 secret ,但无论是否启用它都绝对有效。这是 oauth 的必要功能吗?

此外,根据登录时的 token 格式以及身份验证功能的开/关状态,会出现错误:W/DefaultRequestDirector:身份验证错误:无法响应以下任何质询:{} ,大括号中将包含一些有关 azure 端点的文本。

如果您能提供帮助,非常感谢。这是一个很挑剔的问题。

最佳答案

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

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

作为引用,请查看https://azure.microsoft.com/en-us/documentation/articles/app-service-mobile-migrating-from-mobile-services/#authentication

关于android - Azure mobileserviceclient 登录返回身份验证错误 (401),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36685335/

相关文章:

javascript - Azure 移动服务 javascript SDK 在 Firefox 中不起作用

android - Fragment UI 使用抽屉导航

android - 使用隐式 Intent 启动 Activity ?

android - 帮助解决 PR​​OXIMITY_SCREEN_OFF_WAKE_LOCK 在 Android 中的问题

azure - 如何对 WebAPI 进行无人值守的 oauth/openid 身份验证?

android - 停止执行,直到用户从警报对话框中选择一个按钮

Azure 通知中心查看带有标签的注册

java - android游戏中令人讨厌的滞后/口吃

c# - 替换 DocumentDB 中的文档不保存更改

azure - 如何将数据湖存储中的文件夹作为参数传递给管道?