Google api: 将 credentialBuilder 转换为 httprequestInitializer
Google api: cast credentialBuilder to httprequestInitializer
我正在尝试访问 google 分析数据,但在我的 credentialBuilder 上不断收到 ClassCastException。这是我的代码:
(defn credential
[]
(doto (GoogleCredential$Builder.)
(.setTransport http-transport)
(.setJsonFactory json-factory)
(.setServiceAccountId "X")
(.setServiceAccountPrivateKeyFromP12File (File. "X"))
(.setServiceAccountScopes (AnalyticsReportingScopes/ANALYTICS_READONLY))
(.build)))
(defn analytics
[]
(doto (AnalyticsReporting$Builder. http-transport json-factory (credential))
(.setApplicationName "X")
(.build)))
我不断收到的确切错误是:
com.google.api.client.googleapis.auth.oauth2.GoogleCredential$Builder cannot be cast to com.google.api.client.http.HttpRequestInitializer
我尝试按照Hello Analytics Reporting API V4: Java quickstart for service accounts示例,我做错了什么?
doto
returns 作为第一个参数传递的对象 - 在您的情况下它将 return GoogleCredential$Builder
的实例并忽略 [=15= 的结果] 调用。您需要将其更改为 return 调用 (.build)
的结果:
(defn credential
[]
(->
(doto (GoogleCredential$Builder.)
(.setTransport http-transport)
(.setJsonFactory json-factory)
(.setServiceAccountId "X")
(.setServiceAccountPrivateKeyFromP12File (File. "X"))
(.setServiceAccountScopes (AnalyticsReportingScopes/ANALYTICS_READONLY)))
(.build))
doto
宏扩展为如下形式:
(doto (StringBuilder.)
(.append "a")
(.append "b"))
变成
(let [obj (StringBuilder.)]
(.append obj "a")
(.append obj "b")
obj)
我正在尝试访问 google 分析数据,但在我的 credentialBuilder 上不断收到 ClassCastException。这是我的代码:
(defn credential
[]
(doto (GoogleCredential$Builder.)
(.setTransport http-transport)
(.setJsonFactory json-factory)
(.setServiceAccountId "X")
(.setServiceAccountPrivateKeyFromP12File (File. "X"))
(.setServiceAccountScopes (AnalyticsReportingScopes/ANALYTICS_READONLY))
(.build)))
(defn analytics
[]
(doto (AnalyticsReporting$Builder. http-transport json-factory (credential))
(.setApplicationName "X")
(.build)))
我不断收到的确切错误是:
com.google.api.client.googleapis.auth.oauth2.GoogleCredential$Builder cannot be cast to com.google.api.client.http.HttpRequestInitializer
我尝试按照Hello Analytics Reporting API V4: Java quickstart for service accounts示例,我做错了什么?
doto
returns 作为第一个参数传递的对象 - 在您的情况下它将 return GoogleCredential$Builder
的实例并忽略 [=15= 的结果] 调用。您需要将其更改为 return 调用 (.build)
的结果:
(defn credential
[]
(->
(doto (GoogleCredential$Builder.)
(.setTransport http-transport)
(.setJsonFactory json-factory)
(.setServiceAccountId "X")
(.setServiceAccountPrivateKeyFromP12File (File. "X"))
(.setServiceAccountScopes (AnalyticsReportingScopes/ANALYTICS_READONLY)))
(.build))
doto
宏扩展为如下形式:
(doto (StringBuilder.)
(.append "a")
(.append "b"))
变成
(let [obj (StringBuilder.)]
(.append obj "a")
(.append obj "b")
obj)