我目前有一个登录流程,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: {}
,关于天蓝色端点的大括号中会有一些文字。
非常感谢你能提供帮助。这里有一个挑剔的问题。
答案 0 :(得分:2)
App Service身份验证/授权与迁移的移动服务不兼容,必须保持关闭状态。
要使用迁移的移动服务更新身份验证设置,请设置应用设置。对于Facebook,MS_FacebookAppID
和MS_FacebookAppSecret
。对于Google,MS_GoogleClientID
和MS_GoogleClientSecret
。