का उपयोग कर Google API के साथ प्रमाणीकरण मैं अब कुछ दिनों से इसके साथ संघर्ष कर रहा हूं। मैं Android के AccountManager
के माध्यम से प्रमाणीकरण का उपयोग करके Google कैलेंडर पर कॉल करने का प्रयास कर रहा हूं। मैं सामान्य विधि का उपयोग कर एक प्रमाणीकरण टोकन पुनः प्राप्त:खाता प्रबंधक
AccountManager manager = AccountManager.get(this);
String authToken = manager.getAuthToken(account, AUTH_TOKEN_TYPE, true, null, null).getResult().getString(AccountManager.KEY_AUTHTOKEN);
और फिर, कि टोकन के माध्यम से, मैं इस तरह एक Calendar
उदाहरण बनाने के लिए:
HttpTransport transport = AndroidHttp.newCompatibleTransport();
JacksonFactory jsonFactory = new JacksonFactory();
GoogleAccessProtectedResource accessProtectedResource = new GoogleAccessProtectedResource(accessToken);
Calendar calendar = Calendar.builder(transport, jsonFactory).setApplicationName("MyApp/1.0").setJsonHttpRequestInitializer(new JsonHttpRequestInitializer() {
@Override
public void initialize(JsonHttpRequest request) {
CalendarRequest calendarRequest = (CalendarRequest) request;
calendarRequest.setKey(API_KEY);
}
}).setHttpRequestInitializer(accessProtectedResource).build();
हालांकि, जब मैं इस का उपयोग कर API कॉल करने, मैं नीचे देखी गई 401 Unauthorized
त्रुटि प्राप्त करें। ध्यान दें कि मैंने कालबाह्य लेख टोकन को अमान्य करने के लिए कोड शामिल किया है, इसलिए मुझे विश्वास नहीं है कि यह समस्या है।
com.google.api.client.googleapis.json.GoogleJsonResponseException: 401 Unauthorized
{
"code" : 401,
"errors" : [ {
"domain" : "global",
"location" : "Authorization",
"locationType" : "header",
"message" : "Invalid Credentials",
"reason" : "authError"
} ],
"message" : "Invalid Credentials"
}
कोई विचार क्या मैं गलत कर रहा हूं?
ठीक है, मैं वर्तमान में 'setGoogleLogin() 'को कॉल नहीं कर रहा हूं, लेकिन मैं नमूना कोड देख रहा हूं जो' ((GoogleHeaders) transport.defaultHeaders) .setGoogleLogin (authToken)' कहता है, लेकिन यह भी नहीं है मेरे लिए संकलन करें। मैं google-http-client-1.6.0-beta का उपयोग कर रहा हूं। 'HttpTransport' में अब' डिफ़ॉल्ट हेडर 'फ़ील्ड नहीं दिखता है। –