অ্যান্ড্রয়েড ক্লায়েন্টআইডি ব্যবহার করে (কোনও ক্লায়েন্ট_সেক্রেট নেই) আমি নিম্নলিখিত ত্রুটিটির প্রতিক্রিয়া পাচ্ছি:
{
"error": "invalid_grant",
"error_description": "Missing code verifier."
}
ক্ষেত্রের 'code_verifier' এর জন্য আমি কোনও ডকুমেন্টেশন পাচ্ছি না তবে আমি আবিষ্কার করেছি যে আপনি যদি অনুমোদন এবং টোকেন অনুরোধ উভয় ক্ষেত্রে সমান মানগুলিতে সেট করেন তবে এটি এই ত্রুটিটি সরিয়ে ফেলবে। আমি নিশ্চিত নই যে উদ্দিষ্ট মানটি কী হবে বা এটি নিরাপদ হওয়া উচিত। এর কিছুটা ন্যূনতম দৈর্ঘ্য (16? অক্ষর) রয়েছে তবে আমি null
সেটিও কাজ করে দেখেছি ।
আমি আমার অ্যান্ড্রয়েড ক্লায়েন্টে অনুমোদনের অনুরোধের জন্য AppAuth ব্যবহার করছি যার একটি setCodeVerifier()
ফাংশন রয়েছে।
AuthorizationRequest authRequest = new AuthorizationRequest.Builder(
serviceConfiguration,
provider.getClientId(),
ResponseTypeValues.CODE,
provider.getRedirectUri()
)
.setScope(provider.getScope())
.setCodeVerifier(null)
.build();
নোডে এখানে টোকেন অনুরোধের একটি উদাহরণ রয়েছে:
request.post(
'https://www.googleapis.com/oauth2/v4/token',
{ form: {
'code': '4/xxxxxxxxxxxxxxxxxxxx',
'code_verifier': null,
'client_id': 'xxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com',
'client_secret': null,
'redirect_uri': 'com.domain.app:/oauth2redirect',
'grant_type': 'authorization_code'
} },
function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log('Success!');
} else {
console.log(response.statusCode + ' ' + error);
}
console.log(body);
}
);
আমি পরীক্ষিত এবং এই উভয় সঙ্গে কাজ করে https://www.googleapis.com/oauth2/v4/token
এবং https://accounts.google.com/o/oauth2/token
।
আপনি যদি এর GoogleAuthorizationCodeTokenRequest
পরিবর্তে ব্যবহার করছেন :
final GoogleAuthorizationCodeTokenRequest req = new GoogleAuthorizationCodeTokenRequest(
TRANSPORT,
JSON_FACTORY,
getClientId(),
getClientSecret(),
code,
redirectUrl
);
req.set("code_verifier", null);
GoogleTokenResponse response = req.execute();