无法使用xamarin android获取google Oauth2的刷新令牌

时间:2017-02-01 16:01:43

标签: xamarin google-api xamarin.android oauth2

我正在尝试在我的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))

2 个答案:

答案 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

enter image description here

我实现了一个继承类,您可以在我的https://github.com/xamarin/Xamarin.Auth/pull/79

上找到它

它适用于我的自定义身份提供程序(refresh_token以参数形式返回)。 您可以尝试我的解决方案。

嗨! 刘易斯