dns*_*siv 5 java android google-api google-oauth
我正在使用适用于Android的Google API。由于适用于Android的Google API / G Suite快速入门引用了他们的Java示例,因此我尝试实现此目标:
GoogleAuthorizationCodeFlow flow =
new GoogleAuthorizationCodeFlow.Builder(
ReadMail.HTTP_TRANSPORT, ReadMail.JSON_FACTORY, clientSecrets, ReadMail.SCOPES)
.setDataStoreFactory(ReadMail.DATA_STORE_FACTORY)
.setAccessType("offline")
.build();
AuthorizationCodeInstalledApp authCodeInstalledApp = new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver());
Credential credential = authCodeInstalledApp.authorize("user");
Run Code Online (Sandbox Code Playgroud)
我现在遇到的问题是Android仅支持JDK类的子集。因此,不支持java.awt.Desktop。但我真的需要这个类,因为AuthorizationCodeInstalledApp的authorize()即将或更高版本调用它的实习生功能browse()。此功能需要Desktop类。
有没有办法为Android获取该类?还是有其他解决方法可以通过Google进行身份验证?
dns*_*siv 11
我现在自己解决了。我没有尝试从 java.awt.Desktop 获取 Desktop 类,而是覆盖了 on Authorization 方法:
AuthorizationCodeInstalledApp ab = new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()){
protected void onAuthorization(AuthorizationCodeRequestUrl authorizationUrl) throws IOException {
String url = (authorizationUrl.build());
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
main_Activity.startActivity(browserIntent);
}
};
Run Code Online (Sandbox Code Playgroud)
我这样做的原因是因为 authorize() 将调用 onAuthorization() 它将调用 browse(),它检查是否支持桌面。因此,通过重写 onAuthorization() 方法,我将不再需要该类。我重写的类将在您的 android 设备中使用该授权 URL 启动一个新的 Browserwindow。
我希望,我能够帮助遇到此问题的任何人。
| 归档时间: |
|
| 查看次数: |
262 次 |
| 最近记录: |