Google 需要云打印用户凭据
Google Cloud Print User credentials required
我正在为我的 (java) 网络应用程序实施 google 云打印服务,我已按照所有说明进行操作,但仍然在 response.Here 中得到 "Credentials required" 是我的代码:
public static void main(String[] args) {
HttpPost printPost = new HttpPost(
"https://www.google.com/cloudprint/search?output=json");
printPost.setHeader("Authorization",
"GoogleLogin auth=" +getAccessToken());
printPost.setHeader("scope",
"https://www.googleapis.com/auth/cloudprint");
printPost.setHeader("X-CloudPrint-Proxy", "printingTest");
DefaultHttpClient httpclient = new DefaultHttpClient();
try {
HttpResponse printResponse = httpclient.execute(printPost);
System.out.println(printResponse.getStatusLine());
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static String getAccessToken() {
Credential credential = new GoogleCredential.Builder()
.setTransport(new NetHttpTransport())
.setJsonFactory(new JacksonFactory())
.setClientSecrets(
"client_id",
"client_secret").build();
try {
credential
.setRefreshToken("refresh_token");
credential.refreshToken();
return credential.getAccessToken();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
这是一个简单的搜索结果。
在设置授权访问令牌时,在 header 中使用 "Bearer " 而不是 "GoogleLogin auth=",还请注意 space 和 bearer 很重要
我正在为我的 (java) 网络应用程序实施 google 云打印服务,我已按照所有说明进行操作,但仍然在 response.Here 中得到 "Credentials required" 是我的代码:
public static void main(String[] args) {
HttpPost printPost = new HttpPost(
"https://www.google.com/cloudprint/search?output=json");
printPost.setHeader("Authorization",
"GoogleLogin auth=" +getAccessToken());
printPost.setHeader("scope",
"https://www.googleapis.com/auth/cloudprint");
printPost.setHeader("X-CloudPrint-Proxy", "printingTest");
DefaultHttpClient httpclient = new DefaultHttpClient();
try {
HttpResponse printResponse = httpclient.execute(printPost);
System.out.println(printResponse.getStatusLine());
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static String getAccessToken() {
Credential credential = new GoogleCredential.Builder()
.setTransport(new NetHttpTransport())
.setJsonFactory(new JacksonFactory())
.setClientSecrets(
"client_id",
"client_secret").build();
try {
credential
.setRefreshToken("refresh_token");
credential.refreshToken();
return credential.getAccessToken();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
这是一个简单的搜索结果。
在设置授权访问令牌时,在 header 中使用 "Bearer " 而不是 "GoogleLogin auth=",还请注意 space 和 bearer 很重要