我正在尝试将GoogleAuthUtil库用于Xamarin Android项目,以便在Android设备上检索Google帐户的oauth2令牌。我要验证的特定范围适用于YouTube:https://www.googleapis.com/auth/youtube,目的是能够将用户订阅到特定的YouTube频道。我正在从一个活动进行调用(因此传入'this'作为第一个参数)。第二个参数是从AccountManager检索的电子邮件地址。第三个参数是范围。
GoogleAuthUtil作为Xamarin组件(Google Play服务(Froyo))包含在内,因为该应用目前正在以API 8 +为目标。
我使用GetToken方法如下: -
GoogleAuthUtil.GetToken(this, googleAccount.Name, "oauth2:https://www.googleapis.com/auth/youtube");
此调用会抛出GoogleAuthException,如下所示: -
{Android.Gms.Auth.GoogleAuthException: Exception of type 'Android.Gms.Auth.GoogleAuthException' was thrown. at Android.Runtime.JNIEnv.CallStaticObjectMethod (IntPtr jclass, IntPtr jmethod, Android.Runtime.JValue[] parms) [0x00064] in /Users/builder/data/lanes/monodroid-mlion-monodroid-4.12-series/a1e3982a/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:1160 at Android.Gms.Auth.GoogleAuthUtil.GetToken (Android.Content.Context p0, System.String System.String p2) [0x00000] in <filename unknown>:0 at XXXXX+<>c__DisplayClass4.<OnCreate>b__0 (System.Object x) [0x00002] in XXXXX --- End of managed exception stack trace ---com.google.android.gms.auth.GoogleAuthException: Unknown at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source) at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source) at dalvik.system.NativeStart.run(Native Method) Android.Gms.Auth.GoogleAuthException
注意:我已将名称空间和文件名替换为XXXXX以确保完整性。
我已经根据本论坛和其他论坛上的其他文章和问题为范围尝试了许多不同的字符串,但似乎都会产生“UNKNOWN”错误,或者在某些情况下“INVALID_SCOPE”可能是向后的步骤
最近我尝试了一个范围如下: -
"oauth2:server:client_id:xxxxxxxxxxx.apps.googleusercontent.com:api_scope:https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/youtube");
如下面的问答/答:Similar Question中所示,但我仍然收到相同的“未知”错误。
任何关于为什么会发生此事的想法和/或在Android上实现此功能的替代方法都将受到赞赏。如果获取此令牌所需的所有细节都已在设备上,我宁愿不实施WebView方法。