XML 的 CData JDBC 驱动程序的 OAuth - Google 驱动器上的文件 - 未使用 CallbackURL
OAuth with CData JDBC Driver for XML - Files on Google Drive - CallbackURL not Used
我正在使用 CData JDBC Driver for XML 将 XML 文件读取到我的 java 应用程序中,其中一些文件位于 google 驱动器上,因此需要 OAuth。
我正在遵循 CData 网站上指定的 Authenticate to XML from a Web Application 流程。
第一步是使用 GetOAuthAuthorizationURL 存储过程获取 OAuth 授权 URL。
这是我的代码:
try {
Class.forName("cdata.jdbc.xml.XMLDriver");
} catch (ClassNotFoundException e1) {
}
String url="";
Properties prop = new Properties();
prop.setProperty("InitiateOAuth", "OFF");
prop.setProperty("OAuthClientId", "my-client-id");
prop.setProperty("OAuthClientSecret", "my-client-secret");
prop.setProperty("CallbackURL", redirectUri);
prop.setProperty("OAuthAuthorizationUrl", "https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/drive.readonly");
try (Connection connection = DriverManager.getConnection("jdbc:xml:", prop)) {
CallableStatement cstmt = connection.prepareCall("GetOAuthAuthorizationURL");
boolean ret = cstmt.execute();
if (ret) {
ResultSet rs = cstmt.getResultSet();
while (rs.next()){
for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
System.out.println(rs.getMetaData().getColumnName(i) + "=" + rs.getString(i));
if (StringUtils.equals(rs.getMetaData().getColumnName(i), "URL"))
url = rs.getString(i);
}
}
}
} catch (SQLException e) {
e.printStackTrace();
}
返回的 url 中的 redirect_uri 参数始终设置为默认值 [127.0.0.1] 而不是回调 URL 我作为 属性 发送到 JDBC.
prop.setProperty("CallbackURL", redirectUri);
如何解决这个问题
方法是这样的:
cstmt.setString("CallbackURL", redirectUri);
我正在使用 CData JDBC Driver for XML 将 XML 文件读取到我的 java 应用程序中,其中一些文件位于 google 驱动器上,因此需要 OAuth。
我正在遵循 CData 网站上指定的 Authenticate to XML from a Web Application 流程。
第一步是使用 GetOAuthAuthorizationURL 存储过程获取 OAuth 授权 URL。
这是我的代码:
try {
Class.forName("cdata.jdbc.xml.XMLDriver");
} catch (ClassNotFoundException e1) {
}
String url="";
Properties prop = new Properties();
prop.setProperty("InitiateOAuth", "OFF");
prop.setProperty("OAuthClientId", "my-client-id");
prop.setProperty("OAuthClientSecret", "my-client-secret");
prop.setProperty("CallbackURL", redirectUri);
prop.setProperty("OAuthAuthorizationUrl", "https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/drive.readonly");
try (Connection connection = DriverManager.getConnection("jdbc:xml:", prop)) {
CallableStatement cstmt = connection.prepareCall("GetOAuthAuthorizationURL");
boolean ret = cstmt.execute();
if (ret) {
ResultSet rs = cstmt.getResultSet();
while (rs.next()){
for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
System.out.println(rs.getMetaData().getColumnName(i) + "=" + rs.getString(i));
if (StringUtils.equals(rs.getMetaData().getColumnName(i), "URL"))
url = rs.getString(i);
}
}
}
} catch (SQLException e) {
e.printStackTrace();
}
返回的 url 中的 redirect_uri 参数始终设置为默认值 [127.0.0.1] 而不是回调 URL 我作为 属性 发送到 JDBC.
prop.setProperty("CallbackURL", redirectUri);
如何解决这个问题
方法是这样的:
cstmt.setString("CallbackURL", redirectUri);