Android AppAuth - 跟随 PendingIntent 对象
Android AppAuth - following the PendingIntent object
我一直在尝试在 Android 中实现 Google 的 AppAuth 库,但我正在努力让它工作。我一直在尝试遵循 guide from Google 并将其应用到我自己的代码库中,但我被悬而未决的意图所困。
更具体地说,当我调用 performAuthorizationRequest()
方法时,模拟器可以按照重定向在其自定义选项卡中获取授权码(我可以看到)。但是,没有调用任何处理程序。我试过添加 onNewIntent()
、onActivityResult()
和 onResume()
,但调用了其中的 none。
从 performAuthorizationRequest()
的 Javadocs,我看到了
"the provided {@link PendingIntent completion PendingIntent} will be
invoked".
这是什么意思?如何与完成的 pendingIntent 对象进行交互?有什么方法可以使用创建待定意图时发送的请求代码检索该上下文?
下面是我的代码:
var authReq: AuthorizationRequest = AuthorizationRequest.Builder(
serverConfig,
clientId,
ResponseTypeValues.CODE,
redirectUri
).build()
val service: AuthorizationService = AuthorizationService(view.context)
val action = "com.google.codelabs.appauth.HANDLE_AUTHORIZATION_RESPONSE"
val authIntent = Intent(action)
val pendingIntent = PendingIntent.getActivity(this, authReq.hashCode(), authIntent, 0)
service.performAuthorizationRequest(authReq, pendingIntent)
在我的清单中,我添加了活动:
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="com.google.codelabs.appauth.HANDLE_AUTHORIZATION_RESPONSE"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity android:name="net.openid.appauth.RedirectUriReceiverActivity" >
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="com.google.codelabs.appauth"/>
</intent-filter>
</activity>
好的,在这上面多花了几天时间后,我意识到我弄乱了重定向 URI 和 RedirectUriReceiverActivity 的数据元素。不知何故,this resource 帮助我理解了我所缺少的东西。
在 AndroidManifest.xml 内部,RedirectUriReceiverActivity 需要知道将完成发送回何处。此外,我的重定向 uri(在我的 authReq 中)被设置为外部地址,我将其更改为使用 Android 深层链接。
我一直在尝试在 Android 中实现 Google 的 AppAuth 库,但我正在努力让它工作。我一直在尝试遵循 guide from Google 并将其应用到我自己的代码库中,但我被悬而未决的意图所困。
更具体地说,当我调用 performAuthorizationRequest()
方法时,模拟器可以按照重定向在其自定义选项卡中获取授权码(我可以看到)。但是,没有调用任何处理程序。我试过添加 onNewIntent()
、onActivityResult()
和 onResume()
,但调用了其中的 none。
从 performAuthorizationRequest()
的 Javadocs,我看到了
"the provided {@link PendingIntent completion PendingIntent} will be invoked".
这是什么意思?如何与完成的 pendingIntent 对象进行交互?有什么方法可以使用创建待定意图时发送的请求代码检索该上下文?
下面是我的代码:
var authReq: AuthorizationRequest = AuthorizationRequest.Builder(
serverConfig,
clientId,
ResponseTypeValues.CODE,
redirectUri
).build()
val service: AuthorizationService = AuthorizationService(view.context)
val action = "com.google.codelabs.appauth.HANDLE_AUTHORIZATION_RESPONSE"
val authIntent = Intent(action)
val pendingIntent = PendingIntent.getActivity(this, authReq.hashCode(), authIntent, 0)
service.performAuthorizationRequest(authReq, pendingIntent)
在我的清单中,我添加了活动:
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="com.google.codelabs.appauth.HANDLE_AUTHORIZATION_RESPONSE"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity android:name="net.openid.appauth.RedirectUriReceiverActivity" >
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="com.google.codelabs.appauth"/>
</intent-filter>
</activity>
好的,在这上面多花了几天时间后,我意识到我弄乱了重定向 URI 和 RedirectUriReceiverActivity 的数据元素。不知何故,this resource 帮助我理解了我所缺少的东西。
在 AndroidManifest.xml 内部,RedirectUriReceiverActivity 需要知道将完成发送回何处。此外,我的重定向 uri(在我的 authReq 中)被设置为外部地址,我将其更改为使用 Android 深层链接。