我正在尝试在我的xamarin Android应用中实施Google身份验证。我正在使用OAuth2Authenticator对我的用户进行身份验证,并且在身份验证后它只返回access_token。我是否获得了refresh_token,以便用户每次打开应用时都不必登录?
我一直在使用以下代码来验证用户
#include <boost/preprocessor/seq/for_each.hpp>
#define MACRO(_,d,seq) \
void add(BOOST_PP_SEQ_ELEM(0,seq) val) \
{ obj.BOOST_PP_SEQ_ELEM(1, seq)(val); }
BOOST_PP_SEQ_FOR_EACH(MACRO, _, SEQ_ZIP((types)(funcs))
答案 0 :(得分:0)
似乎Xamarin.Auth和Google存在一些问题,因为Google不再推荐使用应用程序内置的WebView进行登录,而应该使用设备浏览器。请参阅Google关于此的文章:
https://developers.googleblog.com/2016/08/modernizing-oauth-interactions-in-native-apps.html
如果您确实使用了应用程序内置的WebView,正如Xamarin.Auth默认情况下那样,您将无法获得刷新令牌(根据上面链接的文章):
相比之下,使用嵌入式浏览器进行OAuth的过时方法意味着用户每次都必须登录Google,而不是使用设备中现有的登录会话。
答案 1 :(得分:0)
Xamarin Auth不支持refresh_token
我实现了一个继承类,您可以在我的https://github.com/xamarin/Xamarin.Auth/pull/79
上找到它它适用于我的自定义身份提供程序(refresh_token以参数形式返回)。 您可以尝试我的解决方案。
嗨! 刘易斯