gpt4 book ai didi

android - 谷歌播放服务 : TokenActivity appears empty when asking for auth

转载 作者:太空狗 更新时间:2023-10-29 16:41:56 33 4
gpt4 key购买 nike

我正在开发一款使用 Google 云端硬盘作为后端的应用。我已经运行了 DrEdit 示例,但我遇到了授权问题。我到了我得到 UserRecoverableAuthException 并使用它来发布用户必须做某事的通知的地步。问题是当我点击该通知时似乎没有任何反应。

我说没有任何“似乎”发生,因为看起来 Google Play 正在启动来处理它,它只是不可见。如果我点击应用程序切换按钮,我可以看到具有半透明背景的 Google Play 服务磁贴,但用户永远看不到授权屏幕。

App Switcher

有什么我想念的吗?我在该 API 控制台中有一个项目配置了驱动器访问权限,并添加了我的发布和开发构建的 key 。

这是我用于通知的代码。这与 DrEdit 示例中的内容几乎完全相同(也有同样的问题)。

try {
GoogleAccountCredential credential =
GoogleAccountCredential.usingOAuth2(mContext, DriveScopes.DRIVE_FILE);
credential.setSelectedAccountName(mAccount.name);
// Trying to get a token right away to see if we are authorized
credential.getToken();
mService = new Drive.Builder(AndroidHttp.newCompatibleTransport(),
new GsonFactory(), credential).build();
} catch (UserRecoverableAuthException e) {
Log.e("Failed to get token");
// If the exception is User Recoverable, we display a notification that will trigger the
// intent to fix the issue.
Log.e("Notifying with intent: " + e.getIntent().toString());
NotificationManager notificationManager = (NotificationManager) mContext
.getSystemService(Context.NOTIFICATION_SERVICE);
Intent authorizationIntent = e.getIntent();
authorizationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK).addFlags(
Intent.FLAG_FROM_BACKGROUND);
PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0,
authorizationIntent, 0);
Notification notification = new Notification.Builder(mContext)
.setSmallIcon(android.R.drawable.ic_dialog_alert)
.setTicker("Permission requested")
.setContentTitle("Permission requested")
.setContentText("for account " + mAccount.name)
.setContentIntent(pendingIntent).setAutoCancel(true).build();
notificationManager.notify(0, notification);
} catch (Exception e) {
e.printStackTrace();
}

编辑:

我只是想澄清一下,我确实有一个 Google API 项目设置,可以访问 Drive API(最初是 Drive SDK,但我修复了它),我的应用程序的调试 key 是使用 keytool -exportcert -别名 androiddebugkey -keystore ~/.android/debug.keystore -list -v。仍然没有运气。

最佳答案

我终于弄明白了。看起来文档和示例有点过时了,因为范围只有 DriveScopes.DRIVE_FILE 是不够的,需要在它前面加上 "oauth:" .

这是我的代码:

try {
// Trying to get a token right away to see if we are authorized
GoogleAuthUtil.getTokenWithNotification(mContext, mAccount.name,
"oauth2:" + DriveScopes.DRIVE_FILE, null, mAuthority, mSyncBundle);
} catch (UserRecoverableNotifiedException e) {
Log.e("Failed to get token but notified user");
return null;
} catch (Exception e) {
Log.e("Failed to get token", e);
return null;
}

try {
GoogleAccountCredential credential =
GoogleAccountCredential.usingOAuth2(mContext, DriveScopes.DRIVE_FILE);
credential.setSelectedAccountName(mAccount.name);
...

注意:我还决定切换到 GoogleAuthUtil.getTokenWithNotification 让库为我处理通知并在完成后重新启动同步适配器。

关于android - 谷歌播放服务 : TokenActivity appears empty when asking for auth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16451325/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com