অনুমোদন ত্রুটি

অনুমোদন প্রক্রিয়ার সময় Google OAuth-এ ত্রুটি দেখা দিতে পারে। এই প্রক্রিয়ার সবচেয়ে সাধারণ ত্রুটিগুলো সমাধান করতে এই নির্দেশিকাটি ব্যবহার করুন।

সমস্যা সমাধান

Google OAuth সম্পর্কে আরও জানতে, “Using OAuth 2.0 to Access Google APIs” দেখুন।

রিফ্রেশ টোকেনের মেয়াদ বারবার শেষ হয়ে যাচ্ছে।

ক্লায়েন্ট আইডি অনুমোদিত না হলে রিফ্রেশ টোকেন ৭ দিন পর কাজ করা বন্ধ করে দিতে পারে, যা একটি সম্ভাব্য কারণ। এই ৭-দিনের টোকেন মেয়াদোত্তীর্ণ হওয়ার বিষয়টি কমার্শিয়াল বা স্যান্ডবক্স অনুমোদনের সাথে সম্পর্কিত নয়। টোকেনের দীর্ঘ মেয়াদ পেতে হলে, একটি পরিষেবা বা ব্যবহারকারী অ্যাকাউন্টকে তাদের OAuth 2.0 ক্লায়েন্ট আইডি অনুমোদন করিয়ে প্রোডাকশনে আনতে হবে। আরও তথ্যের জন্য রিফ্রেশ টোকেন মেয়াদোত্তীর্ণ দেখুন।

প্রবেশাধিকার অস্বীকার করা হয়েছে

আপনি যদি গুগল ক্লাউডে আপনার OAuth কনসেন্ট স্ক্রিন সেট আপ করে থাকেন এবং ইউজার টাইপ ‘ এক্সটার্নাল’ হয়, তাহলে আপনার অ্যাপের টেস্ট ইউজার হিসেবে তালিকাভুক্ত নয় এমন কোনো গুগল অ্যাকাউন্ট দিয়ে লিঙ্ক করার চেষ্টা করলে আপনি একটি "অ্যাক্সেস ডিনাইড" এরর পাবেন। আপনার OAuth কনসেন্ট স্ক্রিনের টেস্ট ইউজারস সেকশনে গুগল অ্যাকাউন্টটি যোগ করা নিশ্চিত করুন।

পার্টনার কানেকশনস ম্যানেজার (PCM) ত্রুটি

PCM অ্যাক্সেস করার সময় সম্মুখীন হওয়া যেকোনো ত্রুটির সাহায্যের জন্য, পার্টনার কানেকশনস ম্যানেজার (PCM) এরর রেফারেন্স দেখুন।

গুগল এই অ্যাপটি যাচাই করেনি।

SDM API একটি সীমাবদ্ধ স্কোপ ব্যবহার করে, যার অর্থ হলো OAuth API ভেরিফিকেশন সম্পন্ন না হওয়া পর্যন্ত, অথরাইজেশনের সময় এই স্কোপ ব্যবহারকারী যেকোনো অ্যাপ "আনভেরিফাইড" হিসেবে বিবেচিত হবে। Device Access ব্যক্তিগত ব্যবহারের জন্য OAuth API যাচাইকরণের প্রয়োজন নেই।

অনুমোদন প্রক্রিয়ার সময় আপনি "Google hasn't verified this app" স্ক্রিনটি দেখতে পারেন, যা Google Cloud-এর OAuth সম্মতি স্ক্রিনে sdm.service স্কোপটি কনফিগার করা না থাকলে প্রদর্শিত হয়। Advanced অপশনে ক্লিক করে এবং তারপরে Go to Project Name (unsafe)- এ ক্লিক করে এই স্ক্রিনটি এড়িয়ে যাওয়া যায়।

আরও তথ্যের জন্য যাচাইবিহীন অ্যাপ স্ক্রিনটি দেখুন।

অবৈধ ক্লায়েন্ট

অ্যাক্সেস বা রিফ্রেশ টোকেন পাওয়ার চেষ্টা করার সময়, আপনি যদি একটি ভুল OAuth 2.0 ক্লায়েন্ট সিক্রেট প্রদান করেন, তাহলে একটি "অবৈধ ক্লায়েন্ট" ত্রুটি পাবেন। নিশ্চিত করুন যে অ্যাক্সেস এবং রিফ্রেশ টোকেন কলে আপনি client_secret ভ্যালুটি ব্যবহার করছেন, তা আপনার Google Cloud Credentials পৃষ্ঠায় থাকা ব্যবহৃত OAuth 2.0 ক্লায়েন্ট আইডির সাথেই মিলে যায়।

অনুরোধটি অবৈধ, প্রয়োজনীয় পরিধি অনুপস্থিত।

PCM-এ অনুমতি দেওয়ার পরে, আপনি "Missing required parameter: scope" এর কারণে একটি "Invalid request" ত্রুটির সম্মুখীন হতে পারেন। নিশ্চিত করুন যে আপনি অথরাইজেশন কলে যে scope ভ্যালুটি ব্যবহার করছেন, তা আপনার Google Cloud Credentials পৃষ্ঠায় থাকা OAuth 2.0 ক্লায়েন্টের জন্য সেট করা ভ্যালুর মতোই।

পুনঃনির্দেশ ইউআরআই অমিল

অনুমোদন প্রক্রিয়া চলাকালীন, আপনি "Redirect uri mismatch" ত্রুটির সম্মুখীন হতে পারেন। নিশ্চিত করুন যে, অনুমোদন প্রক্রিয়ায় ব্যবহৃত redirect_uri ভ্যালুটি আপনার Google Cloud Credentials পৃষ্ঠায় থাকা OAuth 2.0 ক্লায়েন্টের জন্য সেট করা ভ্যালুটির মতোই।

দ্রুত রেফারেন্স

অনুমোদন করার ধাপগুলো দ্রুত বাস্তবায়ন করতে এই নির্দেশিকাটি ব্যবহার করুন।user এবং তাদের গুগল অ্যাকাউন্ট লিঙ্ক করুন।

এই দ্রুত নির্দেশিকাটি ব্যবহার করতে, কোড স্যাম্পলগুলিতে থাকা প্রতিটি প্লেসহোল্ডার ভেরিয়েবলকে আপনার নির্দিষ্ট ইন্টিগ্রেশনের মান দিয়ে সম্পাদনা করুন এবং প্রয়োজন অনুযায়ী কপি ও পেস্ট করুন:

১ পিসিএম

নির্দেশ দিন user আপনার অ্যাপের PCM লিঙ্কে, প্রতিস্থাপন করে:

  1. project-id আপনার project-id সহ Device Access Project আইডি
  2. আপনার গুগল ক্লাউড ক্রেডেনশিয়ালস থেকে প্রাপ্ত OAuth2 ক্লায়েন্ট আইডি দিয়ে oauth2-client-id
  3. আপনার ব্যবহৃত OAuth2 ক্লায়েন্ট আইডির জন্য নির্দিষ্ট করা একটি রিডাইরেক্ট ইউআরআই দিয়ে redirect-uri
  4. আপনার উপলব্ধ স্কোপগুলির মধ্যে একটি দিয়ে scope
https://nestservices.google.com/partnerconnections/project-id/auth?redirect_uri=redirect-uri&access_type=offline&prompt=consent&client_id=oauth2-client-id&response_type=code&scope=https://www.googleapis.com/auth/scope

২ প্রমাণীকরণ কোড

আপনার নির্বাচিত স্কোপের জন্য PCM-এর মাধ্যমে অনুমতি দেওয়ার পরে, user আপনাকে আপনার নির্দিষ্ট রিডাইরেক্ট ইউআরআই-তে রিডাইরেক্ট করা হবে। অথরাইজেশন কোডটি ইউআরএল-এর code প্যারামিটার হিসেবে ফেরত দেওয়া হয়, যা এই ফরম্যাটে থাকা উচিত:

redirect-uri?code=authorization-code&scope=https://www.googleapis.com/auth/scope

৩ অ্যাক্সেস টোকেন

অনুমোদন কোডটি ব্যবহার করে একটি অ্যাক্সেস টোকেন সংগ্রহ করুন, যা দিয়ে আপনি ব্যবহারকারীর পক্ষ থেকে SDM API কল করতে পারবেন।

Google-এর OAuth এন্ডপয়েন্টে একটি POST কল করুন, নিম্নলিখিতগুলি প্রতিস্থাপন করে:

  1. আপনার গুগল ক্লাউড ক্রেডেনশিয়ালস থেকে প্রাপ্ত OAuth2 ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট ব্যবহার করে oauth2-client-id এবং oauth2-client-secret
  2. পূর্ববর্তী ধাপে প্রাপ্ত কোডটি দিয়ে authorization-code
  3. আপনার ব্যবহৃত OAuth2 ক্লায়েন্ট আইডির জন্য নির্দিষ্ট করা একটি রিডাইরেক্ট ইউআরআই দিয়ে redirect-uri

গুগল OAuth দুটি টোকেন প্রদান করে, একটি অ্যাক্সেস টোকেন এবং একটি রিফ্রেশ টোকেন।

অনুরোধ

curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=oauth2-client-id&client_secret=oauth2-client-secret&code=authorization-code&grant_type=authorization_code&redirect_uri=redirect-uri'

প্রতিক্রিয়া

{
  "access_token": "access-token",
  "expires_in": 3599,
  "refresh_token": "refresh-token",
  "scope": "https://www.googleapis.com/auth/scope",
  "token_type": "Bearer"
}

৪ এপিআই কল

যতক্ষণ না আপনি একটি এপিআই কল করছেন, ততক্ষণ পর্যন্ত অনুমোদন সম্পূর্ণ হবে না। userএর অ্যাক্সেস টোকেন। এই প্রাথমিক কলটি অনুমোদন প্রক্রিয়াটি সম্পন্ন করে এবং ইভেন্টগুলিকে সক্রিয় করে।

অনুমোদন সম্পন্ন করতে আপনাকে অবশ্যই নির্দিষ্ট স্কোপের জন্য তালিকাভুক্ত এপিআই কলগুলোর মধ্যে একটি ব্যবহার করতে হবে

sdm.service

ডিভাইস

আরও তথ্যের জন্য devices.list API রেফারেন্স দেখুন।

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

৫ রিফ্রেশ টোকেন

Google OAuth দ্বারা ফেরত আসা expires_in প্যারামিটারে যেমন উল্লেখ করা আছে, SDM API-এর অ্যাক্সেস টোকেনগুলো শুধুমাত্র ১ ঘণ্টার জন্য বৈধ থাকে। আপনার অ্যাক্সেস টোকেনের মেয়াদ শেষ হয়ে গেলে, একটি নতুন টোকেন পেতে রিফ্রেশ টোকেন ব্যবহার করুন।

Google-এর OAuth এন্ডপয়েন্টে একটি POST কল করুন, নিম্নলিখিতগুলি প্রতিস্থাপন করে:

  1. আপনার গুগল ক্লাউড ক্রেডেনশিয়ালস থেকে প্রাপ্ত OAuth2 ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট ব্যবহার করে oauth2-client-id এবং oauth2-client-secret
  2. প্রাথমিকভাবে অ্যাক্সেস টোকেন পাওয়ার সময় আপনি যে কোডটি পেয়েছিলেন, তা দিয়ে refresh-token

গুগল OAuth একটি নতুন অ্যাক্সেস টোকেন প্রদান করে।

অনুরোধ

curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=oauth2-client-id&client_secret=oauth2-client-secret&refresh_token=refresh-token&grant_type=refresh_token'

প্রতিক্রিয়া

{
  "access_token": "new-access-token",
  "expires_in": 3599,
  "scope": "https://www.googleapis.com/auth/scope",
  "token_type": "Bearer"
}