গুগল ডেটা প্রোটোকল ক্লায়েন্ট লাইব্রেরিতে OAuth

সতর্কতা : এই পৃষ্ঠাটি গুগলের পুরোনো এপিআই, গুগল ডেটা এপিআই সম্পর্কে; এটি শুধুমাত্র গুগল ডেটা এপিআই ডিরেক্টরিতে তালিকাভুক্ত এপিআইগুলির জন্য প্রাসঙ্গিক, যার মধ্যে অনেকগুলি নতুন এপিআই দিয়ে প্রতিস্থাপিত হয়েছে। একটি নির্দিষ্ট নতুন এপিআই সম্পর্কে তথ্যের জন্য, নতুন এপিআইয়ের ডকুমেন্টেশন দেখুন। একটি নতুন এপিআই দিয়ে অনুরোধ অনুমোদন সম্পর্কে তথ্যের জন্য, গুগল অ্যাকাউন্টস প্রমাণীকরণ এবং অনুমোদন দেখুন।

এই ডকুমেন্টটি বর্ণনা করে যে কীভাবে Google Data API ক্লায়েন্ট লাইব্রেরি ব্যবহার করে ওয়েব অ্যাপ্লিকেশনের জন্য Google এর OAuth প্রমাণীকরণের সাথে সংযোগ স্থাপন করতে হয়।

OAuth ইন্টারফেস একটি ওয়েব-ভিত্তিক অ্যাপ্লিকেশনকে একজন ব্যবহারকারীর পক্ষ থেকে একটি Google পরিষেবা অ্যাক্সেস করার অনুমতি দেয়। উচ্চ স্তরের নিরাপত্তা বজায় রাখার জন্য, OAuth ব্যবহারকারীর অ্যাকাউন্ট লগইন তথ্য কখনও ব্যবহার না করেই অ্যাপ্লিকেশনটিকে একটি অ্যাক্সেস টোকেন পেতে সক্ষম করে।

Google Data API ক্লায়েন্ট লাইব্রেরিগুলি আপনার ওয়েব অ্যাপ্লিকেশনে OAuth ব্যবহারে সহায়তা করার জন্য পদ্ধতি প্রদান করে। বিশেষ করে, একটি অনুরোধ টোকেন অর্জন, অনুরোধ টোকেন অনুমোদন এবং অনুমোদিত অনুরোধ টোকেনকে একটি অ্যাক্সেস টোকেনের সাথে বিনিময় করার পদ্ধতি রয়েছে। লাইব্রেরিগুলি Google Data পরিষেবাতে অনুরোধ করার সময় প্রয়োজনীয় স্বাক্ষর অ্যালগরিদমগুলিও পরিচালনা করে।

পাঠকবর্গ

এই ডকুমেন্টটি সেইসব প্রোগ্রামারদের জন্য তৈরি যারা চান যে তাদের ওয়েব-ভিত্তিক অ্যাপ্লিকেশনগুলি ব্যবহারকারীদের পক্ষ থেকে Google ডেটা API ক্লায়েন্ট লাইব্রেরি ব্যবহার করে Google পরিষেবাগুলি অ্যাক্সেস করুক।

এই ডকুমেন্টটি ধরে নিয়েছে যে আপনি OAuth ইন্টারফেস এবং আপনার ওয়েব অ্যাপ্লিকেশনে OAuth অন্তর্ভুক্ত করার সাধারণ প্রক্রিয়ার সাথে পরিচিত। OAuth এর প্রোটোকলের সম্পূর্ণ বিবরণের জন্য, ওয়েব অ্যাপ্লিকেশনের জন্য OAuth প্রমাণীকরণ অথবা oauth.net এর অফিসিয়াল স্পেসিফিকেশন দেখুন।

ক্লায়েন্ট লাইব্রেরি ছাড়াই 3-লেগযুক্ত OAuth এবং Google ডেটা API ব্যবহার করা

যদি আপনি চান যে আপনার ওয়েব অ্যাপ্লিকেশনটি OAuth কে অনুমোদন পদ্ধতি হিসেবে ব্যবহার করে একটি Google ডেটা পরিষেবার সাথে ইন্টারঅ্যাক্ট করুক, তাহলে আপনার যা জানা দরকার তা হল OAuth Authentication for Web Applications । আপনি যদি না চান তবে Google Data APIs ক্লায়েন্ট লাইব্রেরি ব্যবহার করার কোন প্রয়োজন নেই।

আপনার অ্যাপ্লিকেশনটি OAuth ব্যবহার করে একজন ব্যবহারকারীকে কীভাবে প্রমাণীকরণ করতে পারে তার একটি রূপরেখা এখানে দেওয়া হল:

  1. আপনার অ্যাপ্লিকেশনটি OAuthRequestToken এন্ডপয়েন্ট থেকে একটি প্রাথমিক OAuth অনুরোধ টোকেন আনার জন্য একটি স্বাক্ষরিত অনুরোধ করে।
  2. আপনার অ্যাপ্লিকেশনটি অনুরোধ টোকেন অনুমোদনের জন্য ব্যবহারকারীকে উপযুক্ত OAuthAuthorizeToken URL-এ পুনঃনির্দেশিত করে।
  3. অ্যাক্সেস দেওয়ার পরে, ব্যবহারকারীকে আপনার অ্যাপ্লিকেশনে ( oauth_callback url) পুনঃনির্দেশিত করা হবে।
  4. আপনার অ্যাপ্লিকেশনটি OAuthGetAccessToken এন্ডপয়েন্ট ব্যবহার করে অনুমোদিত অনুরোধ টোকেনটিকে একটি অ্যাক্সেস টোকেনে আপগ্রেড করার জন্য একটি স্বাক্ষরিত অনুরোধ পাঠায়।

গুগল ডেটা এপিআই ক্লায়েন্ট লাইব্রেরিগুলি আপনার জন্য বিভিন্ন বিবরণ পরিচালনা করে এই অনুমোদন প্রক্রিয়াটিকে সহজ করে তোলে। এই নথিটি কীভাবে তা ব্যাখ্যা করে।

আপনার ওয়েব অ্যাপ্লিকেশন নিবন্ধন করা হচ্ছে

OAuth-এর জন্য সকল API কল ডিজিটালি স্বাক্ষরিত হওয়া আবশ্যক। Google HMAC-SHA1 এবং RSA-SHA1 স্বাক্ষর পদ্ধতি সমর্থন করে। অনুরোধ স্বাক্ষর করার জন্য, আপনার অ্যাপ্লিকেশনটিকে প্রথমে Google-এ নিবন্ধন করতে হবে। একবার আপনি নিবন্ধন করলে, Google আপনাকে একটি কনজিউমার কী (এবং HMAC-SHA1 এর সাথে ব্যবহারের জন্য গোপন) এবং একটি পাবলিক সার্টিফিকেট আপলোড করার জায়গা প্রদান করবে।

১. আপনার ডোমেইন নিবন্ধন করা

ওয়েব-ভিত্তিক অ্যাপ্লিকেশনের জন্য নিবন্ধন -এ বর্ণিত ধাপগুলি অনুসরণ করুন।

২. একটি প্রাইভেট কী / পাবলিক সার্টিফিকেট জোড়া তৈরি করা (ঐচ্ছিক)

যদি আপনি oauth_signature_method হিসেবে RSA-SHA1 ব্যবহার করতে চান, তাহলে আপনাকে একটি স্ব-স্বাক্ষরকারী RSA প্রাইভেট কী এবং পাবলিক সার্টিফিকেট জোড়া তৈরি করতে হবে। এটি কীভাবে করবেন তার উদাহরণের জন্য (নীচে) একটি স্ব-স্বাক্ষরকারী ব্যক্তিগত কী এবং পাবলিক সার্টিফিকেট তৈরি করা দেখুন।

৩-লেগড OAuth এবং Google ডেটা API গুলির সাথে কাজ করা: ক্লায়েন্ট লাইব্রেরির উদাহরণ

নিম্নলিখিত বিভাগগুলিতে OAuth ডকুমেন্টেশনের " Working With OAuth " বিভাগে বর্ণিত ধাপগুলি অনুসরণ করার জন্য Google Data APIs ক্লায়েন্ট লাইব্রেরি পদ্ধতিগুলি ব্যবহারের উদাহরণ দেখানো হয়েছে। এই ডকুমেন্টের সমস্ত উদাহরণ ধরে নেয় যে আপনার অ্যাপ্লিকেশন হোস্ট ডোমেন হল example.com

আপনার ডেটা অ্যাক্সেসের পরিধি নির্ধারণ করা

প্রতিটি গুগল পরিষেবা একটি scope মান নির্ধারণ করে যা ব্যবহারকারীর ডেটাতে একটি টোকেনের অ্যাক্সেস নির্ধারণ করে। উপলব্ধ স্কোপ মানগুলি গুগল ডেটা FAQ এ তালিকাভুক্ত করা হয়েছে। উদাহরণস্বরূপ, ডকুমেন্টস তালিকা API ব্যবহার করতে, scope https://docs.google.com/feeds/ এ সেট করুন, যেমনটি FAQ এ তালিকাভুক্ত।

দ্রষ্টব্য : আপনার প্রয়োজনীয় অ্যাক্সেসের অনুমতি দেয় এমন সংকীর্ণ URL-এ scope মান সেট করুন। এটি দুর্ঘটনাক্রমে ব্যক্তিগত তথ্য পাওয়ার এবং ফাঁস হওয়ার সম্ভাবনা কমিয়ে দেয়। উদাহরণস্বরূপ, আপনি যদি বর্তমান ব্যবহারকারীর ব্যক্তিগত ডকুমেন্ট তালিকা ফিড অ্যাক্সেস করতে চান, তাহলে https://docs.google.com/feeds/ এর মতো বিস্তৃত স্কোপের পরিবর্তে https://docs.google.com/feeds/default/private/full স্কোপ ব্যবহার করুন, যা সমস্ত ডকুমেন্ট তালিকা ফিডে অ্যাক্সেস প্রদান করে।

মাল্টি-স্কোপড টোকেন

একাধিক Google ডেটা API অ্যাক্সেস করে এমন টোকেন তৈরি করতে, প্রতিটি স্কোপকে একটি স্পেস অক্ষর দিয়ে আলাদা করুন। নীচের উদাহরণটি ব্যবহারকারীর Google ডকুমেন্টস এবং Google ক্যালেন্ডার ডেটা উভয়ের অ্যাক্সেস সহ একটি টোকেন তৈরি করে।

scope=https://www.google.com/calendar/feeds/ https://docs.google.com/feeds/
URL-এনকোডিং

URL-এ প্রদর্শিত নন-ASCII অক্ষর, যেমন কোলন, স্ল্যাশ এবং স্পেস, HTTP-এর মাধ্যমে প্রেরণের জন্য URL-এনকোডেড হতে হবে। Google Data API ক্লায়েন্ট লাইব্রেরিগুলি স্বয়ংক্রিয়ভাবে আপনার জন্য URL-এনকোডেড প্যারামিটার তৈরি করে, যাতে আপনি প্যারামিটারগুলিতে মান নির্ধারণ করার সময় কেবল নন-URL-এনকোডেড স্ট্রিং ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি আপনার কোডে নিম্নলিখিত অ্যাসাইনমেন্ট করতে পারেন:

scope=https://www.google.com/calendar/feeds/ https://docs.google.com/feeds/

যখন আপনি ক্লায়েন্ট লাইব্রেরি কল করেন, তখন scope প্যারামিটারটি স্বয়ংক্রিয়ভাবে নিম্নলিখিত মানটিতে URL-এনকোড হয়ে যায়:
https%3a%2f%2fwww.google.com%2fcalendar%2ffeeds%2f+https%3a%2f%2fdocs.google.com%2ffeeds%2f

একটি অনুরোধ টোকেন আনা হচ্ছে

জাভা

HMAC-SHA1 এর জন্য, অনুমোদন পৃষ্ঠা থেকে ফিরে আসা একটি OAuth টোকেন অবজেক্ট তৈরি করার জন্য আপনার টোকেন গোপনীয়তা (প্রতিক্রিয়ায় প্রাপ্ত) ধরে রাখার জন্য কিছু উপায় প্রয়োজন। এটি করার জন্য, একটি সেশন ভেরিয়েবল বা কুকি সেট করুন।

import com.google.gdata.client.docs.*;
import com.google.gdata.client.authn.oauth.*;

String CONSUMER_KEY = "example.com";
String CONSUMER_SECRET = "abc123doremi";

GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);
oauthParameters.setScope("https://docs.google.com/feeds/");
oauthParameters.setOAuthCallback("http://www.example.com/UpgradeToken.jsp");

GoogleOAuthHelper oauthHelper = new GoogleOAuthHelper(new OAuthHmacSha1Signer());
oauthHelper.getUnauthorizedRequestToken(oauthParameters);

RSA-SHA1 ব্যবহার করে, oauth_token_secret অব্যবহৃত থাকে তাই টোকেন গোপনীয়তা ধরে রাখার কোন প্রয়োজন নেই।

import com.google.gdata.client.docs.*;
import com.google.gdata.client.authn.oauth.*;

String CONSUMER_KEY = "example.com";

GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
oauthParameters.setScope("https://docs.google.com/feeds/");
oauthParameters.setOAuthCallback("http://www.example.com/UpgradeToken.jsp");

PrivateKey privKey = getPrivateKey("/path/to/your/rsakey.pk8");

GoogleOAuthHelper oauthHelper = new GoogleOAuthHelper(new OAuthRsaSha1Signer(privKey));
oauthHelper.getUnauthorizedRequestToken(oauthParameters);

...

public static PrivateKey getPrivateKey(String privKeyFileName) {
  File privKeyFile = new File(privKeyFileName);
  FileInputStream fis = new FileInputStream(privKeyFile);
  DataInputStream dis  = new DataInputStream(fis);

  byte[] privKeyBytes = new byte[(int) privKeyFile.length()];
  dis.read(privKeyBytes);
  dis.close();
  fis.close();

  String BEGIN = "-----BEGIN PRIVATE KEY-----";
  String END = "-----END PRIVATE KEY-----";
  String str = new String(privKeyBytes);
  if (str.contains(BEGIN) && str.contains(END)) {
    str = str.substring(BEGIN.length(), str.lastIndexOf(END));
  }

  KeyFactory fac = KeyFactory.getInstance("RSA");
  EncodedKeySpec privKeySpec = new PKCS8EncodedKeySpec(Base64.decode(str));
  return fac.generatePrivate(privKeySpec);
}

পিএইচপি

স্বাক্ষর পদ্ধতি হিসেবে HMAC-SHA1 ব্যবহার করা:

require_once 'Zend/Oauth/Consumer.php';

session_start();

$CONSUMER_KEY = 'example.com';
$CONSUMER_SECRET = 'abc123doremi';

// Multi-scoped token.
$SCOPES = array(
  'https://docs.google.com/feeds/',
  'https://spreadsheets.google.com/feeds/'
);

$oauthOptions = array(
  'requestScheme' => Zend_Oauth::REQUEST_SCHEME_HEADER,
  'version' => '1.0',
  'consumerKey' => $CONSUMER_KEY,
  'consumerSecret' => $CONSUMER_SECRET,
  'signatureMethod' => 'HMAC-SHA1',
  'callbackUrl' => 'http://myapp.example.com/access_token.php',
  'requestTokenUrl' => 'https://www.google.com/accounts/OAuthGetRequestToken',
  'userAuthorizationUrl' => 'https://www.google.com/accounts/OAuthAuthorizeToken',
  'accessTokenUrl' => 'https://www.google.com/accounts/OAuthGetAccessToken'
);

$consumer = new Zend_Oauth_Consumer($oauthOptions);

// When using HMAC-SHA1, you need to persist the request token in some way.
// This is because you'll need the request token's token secret when upgrading
// to an access token later on. The example below saves the token object as a session variable.
if (!isset($_SESSION['ACCESS_TOKEN'])) {
  $_SESSION['REQUEST_TOKEN'] = serialize($consumer->getRequestToken(array('scope' => implode(' ', $SCOPES))));
}

স্বাক্ষর পদ্ধতি হিসেবে RSA-SHA1 ব্যবহার করা:

require_once 'Zend/Crypt/Rsa/Key/Private.php';
require_once 'Zend/Oauth/Consumer.php';

session_start();

$CONSUMER_KEY = 'example.com';
$SCOPE = 'https://docs.google.com/feeds/';

$oauthOptions = array(
  'requestScheme' => Zend_Oauth::REQUEST_SCHEME_HEADER,
  'version' => '1.0',
  'consumerKey' => $CONSUMER_KEY,
  'consumerSecret' => new Zend_Crypt_Rsa_Key_Private(file_get_contents(realpath('/path/to/yourRSAPrivateKey.pem'))),
  'signatureMethod' => 'RSA-SHA1',
  'callbackUrl' => 'http://myapp.example.com/access_token.php',
  'requestTokenUrl' => 'https://www.google.com/accounts/OAuthGetRequestToken',
  'userAuthorizationUrl' => 'https://www.google.com/accounts/OAuthAuthorizeToken',
  'accessTokenUrl' => 'https://www.google.com/accounts/OAuthGetAccessToken'
);

$consumer = new Zend_Oauth_Consumer($oauthOptions);

if (!isset($_SESSION['ACCESS_TOKEN'])) {
  $_SESSION['REQUEST_TOKEN'] = serialize($consumer->getRequestToken(array('scope' => $SCOPE)));
}

পাইথন

স্বাক্ষর পদ্ধতি হিসেবে HMAC-SHA1 ব্যবহার করা:

আপনি যদি GDClient এর উপর ভিত্তি করে নতুন v2.0+ ক্লাস ব্যবহার করেন, তাহলে ব্যবহার করুন:

import gdata.gauth
import gdata.docs.client

CONSUMER_KEY = 'example.com'
CONSUMER_SECRET = 'abc123doremi'
SCOPES = ['https://docs.google.com/feeds/', 'https://www.google.com/calendar/feeds/']  # example of a multi-scoped token

client = gdata.docs.client.DocsClient(source='yourCompany-YourAppName-v1')

oauth_callback_url = 'http://%s/get_access_token' % self.request.host
request_token = client.GetOAuthToken(
    SCOPES, oauth_callback_url, CONSUMER_KEY, consumer_secret=CONSUMER_SECRET)

# When using HMAC-SHA1, you need to persist the request_token in some way.
# You'll need the token secret when upgrading to an access token later on.
# In Google App Engine, you can use the AeSave helper:
# gdata.gauth.AeSave(request_token, 'myKey')

স্বাক্ষর পদ্ধতি হিসেবে RSA-SHA1 ব্যবহার করা:

...

f = open('/path/to/yourRSAPrivateKey.pem')
RSA_KEY = f.read()
f.close()

request_token = client.GetOAuthToken(SCOPES, oauth_callback_url, CONSUMER_KEY, rsa_private_key=RSA_KEY)

বিকল্পভাবে, যদি আপনি GDataService এর উপর ভিত্তি করে পুরানো v1.0 ক্লাস ব্যবহার করেন, তাহলে কলগুলি একটু আলাদা হবে:

import gdata.auth
import gdata.docs.service

CONSUMER_KEY = 'example.com'
CONSUMER_SECRET = 'abc123doremi'

client = gdata.docs.service.DocsService(source='yourCompany-YourAppName-v1')
client.SetOAuthInputParameters(gdata.auth.OAuthSignatureMethod.HMAC_SHA1, CONSUMER_KEY, consumer_secret=CONSUMER_SECRET)

req_token = client.FetchOAuthRequestToken()
client.SetOAuthToken(req_token)

স্বাক্ষর পদ্ধতি হিসেবে RSA-SHA1 ব্যবহার করা:

...

f = open('/path/to/yourRSAPrivateKey.pem')
RSA_KEY = f.read()
f.close()

client = gdata.docs.service.DocsService(source='yourCompany-YourAppName-v1')
client.SetOAuthInputParameters(gdata.auth.OAuthSignatureMethod.RSA_SHA1, CONSUMER_KEY, rsa_key=RSA_KEY)

SCOPES = ['https://docs.google.com/feeds/', 'https://www.google.com/calendar/feeds/']  # example of a multi-scoped token
req_token = client.FetchOAuthRequestToken(scopes=SCOPES)
client.SetOAuthToken(req_token)

.নেট

Using HMAC-SHA1 as the signature method:

using Google.GData.Client;

string CONSUMER_KEY = "example.com";
string CONSUMER_SECRET = "abc123doremi";

// Multi-scoped token.
string SCOPE = "https://www.google.com/calendar/feeds/ https://www.google.com/m8/feeds/";

OAuthParameters parameters = new OAuthParameters() {
  ConsumerKey = CONSUMER_KEY,
  ConsumerSecret = CONSUMER_SECRET,
  Scope = SCOPE,
  Callback = "http://myapp.example.com/access_token",
  SignatureMethod = "HMAC-SHA1"
}

OAuthUtil.GetUnauthorizedRequestToken(parameters);

স্বাক্ষর পদ্ধতি হিসেবে RSA-SHA1 ব্যবহার করা:

RSA-SHA1 is not supported yet.

একটি অনুরোধ টোকেন অনুমোদন করা হচ্ছে

একটি অনুরোধ টোকেন অনুমোদন করার জন্য, আপনার অ্যাপ্লিকেশনটিকে ব্যবহারকারীকে OAuthAuthorizeToken URL-এ পুনঃনির্দেশিত করতে হবে, যা তাদের তাদের Google অ্যাকাউন্টে লগ ইন করতে অনুরোধ করবে। OAuthAuthorizeToken URL সম্পর্কে আরও তথ্যের জন্য, ওয়েব অ্যাপ্লিকেশনের জন্য সম্পূর্ণ OAuth প্রমাণীকরণ দেখুন।

আপনার অ্যাপ্লিকেশনে OAuthAuthorizeToken URL তৈরি করতে, প্রতিটি ক্লায়েন্ট লাইব্রেরির জন্য নিম্নলিখিতটি ব্যবহার করুন। মনে রাখবেন, এই নমুনাগুলি পূর্ববর্তী উদাহরণগুলির উপর ভিত্তি করে তৈরি।

অনুমোদন পৃষ্ঠার URL তৈরি করার পর, আপনার অ্যাপ্লিকেশনটি এটি বিভিন্ন উপায়ে ব্যবহার করে ব্যবহারকারীকে OAuthAuthorizeToken হ্যান্ডলারে পাঠাতে পারে। সবচেয়ে সাধারণ পদ্ধতি হল ব্যবহারকারীকে পুনঃনির্দেশিত করা বা সেই পৃষ্ঠায় একটি লিঙ্ক প্রদর্শন করা।

জাভা

HMAC-SHA1 এর জন্য:

String approvalPageUrl = oauthHelper.createUserAuthorizationUrl(oauthParameters);
System.out.println(approvalPageUrl);

RSA-SHA1 এর জন্য:

String approvalPageUrl = oauthHelper.createUserAuthorizationUrl(oauthParameters);
System.out.println(approvalPageUrl);

পিএইচপি

// If on a G Suite domain, use your domain for the hd param (e.g. 'example.com').
$approvalUrl = $consumer->getRedirectUrl(array('hd' => 'default'));
echo "<a href=\"$approvalUrl\">Grant access</a>";

অন্যথায়, আপনি কেবল অনুমোদনের URL-এ পুনঃনির্দেশ করতে পারেন:

// If on a G Suite domain, use your domain for the hd param (e.g. 'example.com').
$consumer->redirect(array('hd' => 'default'));

পাইথন

আপনি যদি GDClient এর উপর ভিত্তি করে নতুন v2.0+ ক্লাস ব্যবহার করেন, তাহলে ব্যবহার করুন:

# req_token is from previous call to client.GetOAuthToken()
domain = None  # If on a G Suite domain, use your domain (e.g. 'example.com').
self.redirect(request_token.generate_authorization_url(google_apps_domain=domain))

আপনি যদি GDataService এর উপর ভিত্তি করে পুরোনো v1.0 ক্লাস ব্যবহার করেন, তাহলে প্রক্রিয়াটি একটু ভিন্ন।

# req_token is from previous call to client.FetchOAuthRequestToken()
oauth_callback_url = 'http://%s/get_access_token' % self.request.host
self.redirect(client.GenerateOAuthAuthorizationURL(callback_url=oauth_callback_url))

.নেট

string authorizationUrl = OAuthUtil.CreateUserAuthorizationUrl(parameters);
Console.WriteLine(authorizationUrl);

কলব্যাক URL থেকে টোকেনটি বের করা হচ্ছে

যখন Google আপনার অ্যাপ্লিকেশনে পুনঃনির্দেশিত করে, তখন oauth_token " oauth_callback_url " URL-এ একটি কোয়েরি প্যারামিটার হিসেবে যুক্ত করা হয়। এরপর আপনার অ্যাপ্লিকেশনটি তার URL কোয়েরি প্যারামিটার থেকে টোকেন মান বের করে oauth প্যারামিটারগুলি পুনরায় স্থাপন করবে।

ক্লায়েন্ট লাইব্রেরিগুলি oauth_token এক্সট্রাক্ট করার জন্য সুবিধাজনক পদ্ধতি প্রদান করে। এই নমুনাগুলি পূর্ববর্তী উদাহরণগুলির উপর ভিত্তি করে তৈরি।

জাভা

যদি আপনি কলব্যাক URL-এ টোকেন গোপনীয়তা বজায় রাখতে চান ( HMAC-SHA1 ব্যবহার করার সময়):

GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);

GoogleOAuthHelper oauthHelper = new GoogleOAuthHelper(new OAuthHmacSha1Signer());
oauthHelper.getOAuthParametersFromCallback(request.getQueryString(), oauthParameters);

RSA-SHA1 এর সাথে একমাত্র পার্থক্য হল স্বাক্ষর পদ্ধতি:

GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);

PrivateKey privKey = getPrivateKey("/path/to/your/rsakey.pk8");

GoogleOAuthHelper oauthHelper = new GoogleOAuthHelper(new OAuthRsaSha1Signer(privKey));
oauthHelper.getOAuthParametersFromCallback(request.getQueryString(), oauthParameters);

পিএইচপি

পিএইচপি লাইব্রেরি ব্যবহার করার সময় এই ধাপটি প্রয়োজনীয় নয়।

পাইথন

আপনি যদি GDClient এর উপর ভিত্তি করে নতুন v2.0+ ক্লাস ব্যবহার করেন, তাহলে ব্যবহার করুন:

# Recall request_token. In Google App Engine, use AeLoad():
# saved_request_token = gdata.gauth.AeLoad('myKey')

request_token = gdata.gauth.AuthorizeRequestToken(saved_request_token, self.request.uri)

আপনি যদি GDataService এর উপর ভিত্তি করে পুরোনো v1.0 ক্লাস ব্যবহার করেন, তাহলে ব্যবহার করুন:

oauth_token = gdata.auth.OAuthTokenFromUrl(self.request.uri)
if oauth_token:
  oauth_token.secret = # TODO: recall saved request_token and set the token secret here.
  oauth_token.oauth_input_params = gdata.auth.OAuthInputParams(
      gdata.auth.OAuthSignatureMethod.HMAC_SHA1, CONSUMER_KEY, consumer_secret=CONSUMER_SECRET)
 client.SetOAuthToken(oauth_token)
else:
  print 'No oauth_token found in the URL'

প্রক্রিয়াটি RSA-SHA1 এর জন্য একই রকম, কিন্তু টোকেন গোপন ছাড়াই:

oauth_token = gdata.auth.OAuthTokenFromUrl(self.request.uri)
if oauth_token:
  oauth_token.oauth_input_params = gdata.auth.OAuthInputParams(
      gdata.auth.OAuthSignatureMethod.RSA_SHA1, CONSUMER_KEY, rsa_key=RSA_KEY)
 client.SetOAuthToken(oauth_token)
else:
  print 'No oauth_token found in the URL'

.নেট

যদি আপনি কলব্যাক URL-এ টোকেন গোপনীয়তা বজায় রাখতে চান:

OAuthUtil.UpdateOAuthParametersFromCallback(url, parameters);

একটি অ্যাক্সেস টোকেনে আপগ্রেড করা হচ্ছে

OAuth টোকেন নৃত্যের শেষ ধাপ হল OAuthGetAccessToken URL ব্যবহার করে অনুমোদিত অনুরোধ টোকেনটিকে দীর্ঘস্থায়ী অ্যাক্সেস টোকেনে আপগ্রেড করা, যেমনটি সম্পূর্ণ OAuth Authentication for Web Applications ডকুমেন্টেশনে বর্ণিত হয়েছে।

প্রতিটি ক্লায়েন্ট লাইব্রেরি ব্যবহারের কিছু উদাহরণ এখানে দেওয়া হল:

জাভা

String accessToken = oauthHelper.getAccessToken(oauthParameters);
// You can also pull the OAuth token string from the oauthParameters:
// String accessToken = oauthParameters.getOAuthToken();
System.out.println("OAuth Access Token: " + accessToken);

String accessTokenSecret = oauthParameters.getOAuthTokenSecret();
System.out.println("OAuth Access Token's Secret: " + accessTokenSecret);

পিএইচপি

if (!isset($_SESSION['ACCESS_TOKEN'])) {
  if (!empty($_GET) && isset($_SESSION['REQUEST_TOKEN'])) {
    $_SESSION['ACCESS_TOKEN'] = serialize($consumer->getAccessToken($_GET, unserialize($_SESSION['REQUEST_TOKEN'])));
  }
}

পাইথন

আপনি যদি GDClient এর উপর ভিত্তি করে নতুন v2.0+ ক্লাস ব্যবহার করেন, তাহলে ব্যবহার করুন:

# Upgrade the token and save in the user's datastore
access_token = client.GetAccessToken(request_token)

# If you're using Google App Engine, you can call the AeSave() method to save
# the access token under the current logged in user's account.
#gdata.gauth.AeSave(access_token, token_key)

আপনি যদি GDataService এর উপর ভিত্তি করে পুরোনো v1.0 ক্লাস ব্যবহার করেন, তাহলে ব্যবহার করুন:

access_token = client.UpgradeToOAuthAccessToken()  # calls SetOAuthToken() for you

আপনি যদি অ্যাপ ইঞ্জিনে gdata.gauth.AeSave() ব্যবহার করেন, তাহলে টোকেন এবং টোকেন সিক্রেট আপনার জন্য বর্তমান লগ ইন করা ব্যবহারকারীর অধীনে সংরক্ষণ করা হবে।

.নেট

OAuthUtil.GetAccessToken(parameters);

// If you want to extract the OAuth Token/TokenSecret from the OAuthParameters instance:
string accessToken = parameter.Token;
Console.WriteLine("OAuth Access Token: " + accessToken);

string accessTokenSecret = parameter.TokenSecret;
Console.WriteLine("OAuth Access Token's Secret: " + accessTokenSecret);

দ্রষ্টব্য : যদি আপনি HMAC-SHA1 ব্যবহার করেন, তাহলে আপনার ডাটাবেসে টোকেন মানের পাশাপাশি অ্যাক্সেস টোকেনের টোকেন সিক্রেট সংরক্ষণ করতে ভুলবেন না, অন্যথায় আপনি পরবর্তী ব্যবহারের জন্য oauth প্যারামিটারগুলি সঠিকভাবে পুনর্গঠন করতে পারবেন না।

একটি অ্যাক্সেস টোকেন ব্যবহার করা

অ্যাক্সেস টোকেন পাওয়ার পর, পরিষেবার সাথে ইন্টারঅ্যাক্ট করার জন্য স্ট্যান্ডার্ড Google Data APIs ক্লায়েন্ট লাইব্রেরি কলগুলি ব্যবহার করুন। লাইব্রেরি অনুরোধগুলিতে স্বাক্ষর করার এবং আপনার জন্য সঠিক অনুমোদন শিরোনাম অন্তর্ভুক্ত করার যত্ন নেবে। সাধারণত, আপনি একটি কুকি বা ডাটাবেস থেকে ব্যবহারকারীর টোকেন প্রত্যাহার করবেন। এই উদাহরণগুলি কীভাবে oauth প্যারামিটারগুলি পুনর্গঠন করতে হয় এবং একটি ক্লায়েন্ট লাইব্রেরি কল করতে হয় তা প্রদর্শন করে।

জাভা

যদি আপনি HMAC-SHA1 ব্যবহার করেন:

  GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
  oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
  oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);
  oauthParameters.setOAuthToken(ACCESS_TOKEN);
  oauthParameters.setOAuthTokenSecret(TOKEN_SECRET);

  DocsService client = new DocsService("yourCompany-YourAppName-v1");
  client.setOAuthCredentials(oauthParameters, new OAuthHmacSha1Signer());

  URL feedUrl = new URL("https://docs.google.com/feeds/default/private/full");
  DocumentListFeed resultFeed = client.getFeed(feedUrl, DocumentListFeed.class);
  for (DocumentListEntry entry : resultFeed.getEntries()) {
    System.out.println(entry.getTitle().getPlainText());
  }
  

The difference with RSA-SHA1 is that you don't need to set the access token's secret and constructing the signer object is different:

  GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
  oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
  oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);
  oauthParameters.setOAuthToken(ACCESS_TOKEN);

  PrivateKey privKey = getPrivateKey("/path/to/your/rsakey.pk8");  // See above for the defintion of getPrivateKey()

  DocsService client = new DocsService("yourCompany-YourAppName-v1");
  client.setOAuthCredentials(oauthParameters, new OAuthRsaSha1Signer(privKey));

  URL feedUrl = new URL("https://docs.google.com/feeds/default/private/full");
  DocumentListFeed resultFeed = client.getFeed(feedUrl, DocumentListFeed.class);
  for (DocumentListEntry entry : resultFeed.getEntries()) {
    System.out.println(entry.getTitle().getPlainText());
  }
  

পিএইচপি

require_once 'Zend/Gdata/Docs.php';

if (isset($_SESSION['ACCESS_TOKEN'])) {
  $accessToken = unserialize($_SESSION['ACCESS_TOKEN']);
} else {
  exit;
}


/*  Or, you could set an existing token (say one stored from your database). For HMAC-SHA1:
$accessToken = new Zend_Oauth_Token_Access();
$accessToken->setToken('1/AQfoI-qJDqkvvkf216Gc2g');
$accessToken->setTokenSecret('2c26GLW250tZiQ');
*/

$httpClient = $accessToken->getHttpClient($oauthOptions);
$client = new Zend_Gdata_Docs($httpClient, "yourCompany-YourAppName-v1");

// Retrieve user's list of Google Docs
$feed = $client->getDocumentListFeed();
foreach ($feed->entries as $entry) {
  echo "$entry->title\n";
}

পাইথন

এই স্নিপেটটি ধরে নিচ্ছে যে আপনি ইতিমধ্যেই একটি অ্যাক্সেস টোকেন ( HMAC-SHA1 ব্যবহার করে) পেয়েছেন এবং পরবর্তী ব্যবহারের জন্য সেই টোকেন কী/গোপনটি প্রত্যাহার করছেন।

আপনি যদি GDClient এর উপর ভিত্তি করে নতুন v2.0+ ক্লাস ব্যবহার করেন, তাহলে ব্যবহার করুন:

client = gdata.docs.client.DocsClient(source='yourCo-yourAppName-v1')
client.auth_token = gdata.gauth.OAuthHmacToken(CONSUMER_KEY, CONSUMER_SECRET, TOKEN,
                                               TOKEN_SECRET, gdata.gauth.ACCESS_TOKEN)
feed = client.GetDocList()
for entry in feed.entry:
  print entry.title.text

আপনি যদি GDataService এর উপর ভিত্তি করে পুরোনো v1.0 ক্লাস ব্যবহার করেন, তাহলে ব্যবহার করুন:

client = gdata.docs.service.DocsService(source='yourCompany-YourAppName-v1')
client.SetOAuthInputParameters(SIG_METHOD, CONSUMER_KEY, consumer_secret=CONSUMER_SECRET)

# the token key and secret should be recalled from your database
client.SetOAuthToken(gdata.auth.OAuthToken(key=TOKEN, secret=TOKEN_SECRET))

feed = client.GetDocumentListFeed()
for entry in feed.entry:
  print entry.title.text

.নেট

যদি আপনি HMAC-SHA1 ব্যবহার করেন:

OAuthParameters parameters = new OAuthParameters() {
  ConsumerKey = CONSUMER_KEY,
  ConsumerSecret = CONSUMER_SECRET,
  Token = ACCESS_TOKEN,
  TokenSecret = TOKEN_SECRET
}

GOAuthRequestFactory requestFactory = new GOAuthRequestFactory("writely", APPLICATION_NAME, parameters);

DocsService service = new DocsService(APPLICATION_NAME);
service.RequestFactory = requestFactory;

DocumentsListQuery query = new DocumentsListQuery();
DocumentsFeed feed = service.Query(query);
foreach (DocumentEntry entry in feed.Entries) {
  Console.WriteLine(entry.Title.Text);
}

RSA-SHA1 এর সাথে পার্থক্য হল যে আপনাকে অ্যাক্সেস টোকেনের গোপনীয়তা সেট করার প্রয়োজন নেই এবং স্বাক্ষরকারী বস্তু তৈরি করা ভিন্ন:

RSA-SHA1 is not supported yet.

অতিরিক্ত 3-লেগড OAuth রিসোর্স এবং নমুনা

উপরে ফিরে যান

২ লেগড ওঅথ

2-legged OAuth বিশ্বস্ত অ্যাপ্লিকেশনগুলিকে ব্যবহারকারীদের সরাসরি জড়িত না করেই তাদের Google ডেটা অ্যাক্সেস করার অনুমতি দেয়। দুটি মূল গ্রুপ দুই-legged OAuth ব্যবহার করতে পারে:

G Suite ডোমেন অ্যাডমিনিস্ট্রেটর: অ্যাডমিনিস্ট্রেটররা স্ক্রিপ্ট এবং কাস্টম অ্যাপ্লিকেশন তৈরি করতে পারেন যা Google Data API-এর মাধ্যমে তাদের ডোমেনের জন্য ব্যবহারকারীর ডেটা পরিচালনা করে। আপনার G Suite ডোমেনের সাথে সম্পর্কিত কী এবং গোপনীয়তা পরিচালনা এবং বিশ্বব্যাপী অ্যাক্সেস নিয়ন্ত্রণ প্রদান সম্পর্কে জানতে, "OAuth কী এবং গোপনীয়তা পরিচালনা করা" দেখুন।

তৃতীয় পক্ষের সফ্টওয়্যার বিক্রেতারা: বিক্রেতারা এমন অ্যাপ্লিকেশন অফার করতে পারে যা G Suite-এর সাথে একীভূত করার জন্য দুই-স্তরের OAuth ব্যবহার করে। তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলির অ্যাক্সেস Manage API ক্লায়েন্ট পৃষ্ঠায় অথবা G Suite Marketplace থেকে ইনস্টল করে মঞ্জুর করা যেতে পারে।

স্বাভাবিক অনুমোদন প্রবাহ (যা 3-legged OAuth নামেও পরিচিত) অনুসারে অ্যাক্সেস টোকেনের প্রয়োজন হয় না।

নিম্নলিখিত ক্লায়েন্ট লাইব্রেরির নমুনাগুলি দেখায় যে কীভাবে আপনার ক্লায়েন্টকে HMAC-SHA1 ব্যবহার করে 2 Legged OAuth ব্যবহার করার জন্য সেটআপ করবেন।

জাভা

import com.google.gdata.client.docs.*;
import com.google.gdata.client.authn.oauth.*;

String CONSUMER_KEY = "example.com";
String CONSUMER_SECRET = "abc123doremi";

GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);

DocsService client = new DocsService("yourCompany-YourAppName-v1");
client.setOAuthCredentials(oauthParameters, new OAuthHmacSha1Signer());

// Retrieve user's list of Google Docs
String user = "any.user@anydomain.com";
URL feedUrl = new URL("https://docs.google.com/feeds/default/private/full" +
                      "?xoauth_requestor_id=" + user);

DocumentListFeed resultFeed = client.getFeed(feedUrl, DocumentListFeed.class);
for (DocumentListEntry entry : resultFeed.getEntries()) {
  System.out.println(entry.getTitle().getPlainText());
}

পিএইচপি

require_once 'Zend/Oauth/Consumer.php';
require_once 'Zend/Gdata/Docs.php';

$CONSUMER_KEY = 'example.com';
$CONSUMER_SECRET = 'abc123doremi';
$USER = 'any.user@anydomain.com';

$oauthOptions = array(
    'requestScheme' => Zend_Oauth::REQUEST_SCHEME_HEADER,
    'version' => '1.0',
    'signatureMethod' => 'HMAC-SHA1',
    'consumerKey' => $CONSUMER_KEY,
    'consumerSecret' => $CONSUMER_SECRET
);

$consumer = new Zend_Oauth_Consumer($oauthOptions);
$token = new Zend_Oauth_Token_Access();
$httpClient = $token->getHttpClient($oauthOptions);

$client = new Zend_Gdata_Docs($httpClient);

// Retrieve user's list of Google Docs
$feed = $client->getDocumentListFeed('https://docs.google.com/feeds/default/private/full?xoauth_requestor_id=' . urlencode($USER));
foreach ($feed->entries as $entry) {
  echo "$entry->title\n";
}

পাইথন

আপনি যদি GDClient এর উপর ভিত্তি করে নতুন v2.0+ ক্লাস ব্যবহার করেন, তাহলে ব্যবহার করুন:

import gdata.gauth
import gdata.docs.client

CONSUMER_KEY = 'example.com'
CONSUMER_SECRET = 'abc123doremi'
requestor_id = 'any.user@anydomain.com'

client = gdata.docs.client.DocsClient(source='yourCompany-YourAppName-v1')
client.auth_token = gdata.gauth.TwoLeggedOAuthHmacToken(
    CONSUMER_KEY, CONSUMER_SECRET, requestor_id)

# Retrieve user's list of Google Docs
feed = client.GetDocList()
for entry in feed.entry:
  print entry.title.text

আপনি যদি GDataService এর উপর ভিত্তি করে পুরোনো v1.0 ক্লাস ব্যবহার করেন, তাহলে ব্যবহার করুন:

import gdata.auth
import gdata.docs.service

CONSUMER_KEY = 'example.com'
CONSUMER_SECRET = 'abc123doremi'
SIG_METHOD = gdata.auth.OAuthSignatureMethod.HMAC_SHA1

requestor_id = 'any.user@anydomain.com'

client = gdata.docs.service.DocsService(source='yourCompany-YourAppName-v1')
client.SetOAuthInputParameters(SIG_METHOD, CONSUMER_KEY, consumer_secret=CONSUMER_SECRET,
                               two_legged_oauth=True, requestor_id=requestor_id)

# Retrieve user's list of Google Docs
feed = client.GetDocumentListFeed()
for entry in feed.entry:
  print entry.title.text

# Change to another user on your domain
client.GetOAuthInputParameters().requestor_id = 'another.user@example.com'

.নেট

using Google.GData.Client;
using Google.GData.Documents;

// Create an OAuth factory to use
GOAuthRequestFactory requestFactory = new GOAuthRequestFactory("writely", "yourCompany-YourAppName-v1");
requestFactory.ConsumerKey = "example.com";
requestFactory.ConsumerSecret = "abc123doremi";

String user = "any.user@anydomain.com";

DocumentsService client = new DocumentsService("yourCompany-YourAppName-v1");
client.RequestFactory = requestFactory;

// Retrieve user's list of Google Docs
DocumentsListQuery query = new DocumentsListQuery();
query.Uri = new OAuthUri("https://docs.google.com/feeds/default/private/full", user, requestFactory.ConsumerKey);

DocumentsFeed feed = client.Query(query);

foreach (DocumentEntry entry in feed.Entries)
{
  Console.WriteLine(entry.Title.Text);
}

অতিরিক্ত 2-লেগড OAuth রিসোর্স এবং নমুনা

একটি স্ব-স্বাক্ষরকারী ব্যক্তিগত কী এবং পাবলিক সার্টিফিকেট তৈরি করা

ব্যক্তিগত কীটি একটি স্বাক্ষর তৈরি করতে ব্যবহৃত হয়, যা প্রতিটি অনুরোধের সাথে অন্তর্ভুক্ত করতে হবে। সার্টিফিকেটে এমবেড করা পাবলিক কীটি গুগল স্বাক্ষর যাচাই করার জন্য ব্যবহার করে। পাবলিক কীটি অবশ্যই PEM ফর্ম্যাটে X.509 সার্টিফিকেটে এনকোড করা একটি 1024-বিট RSA কী হতে হবে। নিবন্ধনের সময় সার্টিফিকেটটি গুগলে পাঠানো উচিত।

নিম্নলিখিত বিভাগগুলিতে দুটি নির্দিষ্ট সরঞ্জাম ব্যবহার করে কী এবং সার্টিফিকেট তৈরি করার উদাহরণ দেওয়া হয়েছে: OpenSSL ইউটিলিটি এবং জাভার keytool ইউটিলিটি।

এই উদাহরণগুলি Google Data API-এর জন্য নির্দিষ্ট নয়; আপনি যেকোনো উদ্দেশ্যে কী তৈরি করতে একই ইউটিলিটি ব্যবহার করতে পারেন।

The examples assume that your company is named My_Company, and is located in Mountain View, California, US, with domain name example.com.

OpenSSL ব্যবহার করে কী তৈরি করা হচ্ছে

একজোড়া RSA কী এবং সংশ্লিষ্ট সার্টিফিকেট তৈরি করতে, আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:

# Generate the RSA keys and certificate
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -sha1 -subj \
  '/C=US/ST=CA/L=Mountain View/CN=www.example.com' -keyout \
  myrsakey.pem -out /tmp/myrsacert.pem

সতর্কতা : -nodes প্যারামিটার অন্তর্ভুক্ত করলে এটি সুরক্ষিত করার জন্য পাসওয়ার্ড ছাড়াই একটি প্রাইভেট কী তৈরি হয়। তবে, অতিরিক্ত সুরক্ষার জন্য আপনার এই প্যারামিটারটি বাদ দেওয়ার কথা বিবেচনা করা উচিত।

-sha1 প্যারামিটারটি নির্দিষ্ট করে যে কীটি SHA1 স্বাক্ষর তৈরি করতে ব্যবহৃত হবে।

-subj প্যারামিটারটি সার্টিফিকেটটি যে অ্যাপ্লিকেশনটির প্রতিনিধিত্ব করে তার পরিচয় নির্দিষ্ট করে।

-keyout প্যারামিটারটি সেই ফাইলটি নির্দিষ্ট করে যেখানে কীগুলি থাকবে। এই ফাইলটিতে সংবেদনশীল তথ্য রয়েছে এবং এটি সুরক্ষিত রাখা উচিত এবং কারও সাথে ভাগ করা উচিত নয়।

-out প্যারামিটারটি সেই ফাইলটি নির্দিষ্ট করে যা PEM ফর্ম্যাটে সার্টিফিকেট ধারণ করবে (যা নিবন্ধনের সময় Google এ পাঠানো যেতে পারে)।

.NET ক্লায়েন্টের জন্য কী তৈরি করা হচ্ছে

.NET ফ্রেমওয়ার্ক PEM ফর্ম্যাটে সংরক্ষিত কী বা সার্টিফিকেট বুঝতে পারে না। অতএব, .pem ফাইল তৈরি করার পরে একটি অতিরিক্ত পদক্ষেপ প্রয়োজন:

openssl pkcs12 -export -in test_cert.pem -inkey myrsacert.pem -out myrsacert.pfx -name "Testing Certificate"

এই ধাপটি আপনার প্রাইভেট কী এবং সার্টিফিকেট থেকে একটি PFX ফাইল তৈরি করে। Google ডেটা API-তে করা অনুরোধগুলি ডিজিটালি স্বাক্ষর করার জন্য এই ফাইলটি .NET ক্লায়েন্ট লাইব্রেরিতে আমদানি করা যেতে পারে।

জাভা ক্লায়েন্টের জন্য কী তৈরি করা হচ্ছে

জাভা ক্লায়েন্ট PKCS#8 ফর্ম্যাটে প্রাইভেট কী গ্রহণ করে। উপরের নির্দেশাবলী ব্যবহার করে একটি কী/সার্ট তৈরি করার পরে, আপনার তৈরি করা .pem ফাইল থেকে একটি .pk8 ফাইল তৈরি করুন:

openssl pkcs8 -in myrsakey.pem -topk8 -nocrypt -out myrsakey.pk8

বিকল্পভাবে, আপনি জাভা কী স্টোর এবং keytool ইউটিলিটি ব্যবহার করে RSA কী এবং সংশ্লিষ্ট সার্টিফিকেট তৈরি করতে পারেন। নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

# Generate the RSA keys and certificate
keytool -genkey -v -alias Example -keystore ./Example.jks\
  -keyalg RSA -sigalg SHA1withRSA\
  -dname "CN=www.example.com, OU=Engineering, O=My_Company, L=Mountain  View, ST=CA, C=US"\
  -storepass changeme -keypass changeme

সতর্কতা : " changeme " একটি ভালো পাসওয়ার্ড নয়; এটি কেবল একটি উদাহরণ।

-dname প্যারামিটারটি সার্টিফিকেটটি যে অ্যাপ্লিকেশনটির প্রতিনিধিত্ব করে তার পরিচয় নির্দিষ্ট করে। -storepass প্যারামিটারটি কীস্টোরকে সুরক্ষিত করার জন্য পাসওয়ার্ড নির্দিষ্ট করে। -keypass প্যারামিটারটি ব্যক্তিগত কী সুরক্ষিত করার জন্য পাসওয়ার্ড নির্দিষ্ট করে।

ManageDomains টুলে ব্যবহার করা যেতে পারে এমন একটি ফাইলে সার্টিফিকেট লিখতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

# Output the public certificate to a file
keytool -export -rfc -keystore ./Example.jks -storepass changeme \
  -alias Example -file mycert.pem

উপরে ফিরে যান