লক্ষ্য: কোনও ব্যবহারকারীকে ফেসবুকের সাথে কোনও আইওএস অ্যাপ্লিকেশনটিতে প্রমাণীকরণের অনুমতি দিন যার জন্য আমি চালিত একটি সুরক্ষিত ওয়েব পরিষেবায় অ্যাক্সেস প্রয়োজন।
অনুমান: এই ব্যবহারকারীদের সাইন ইন করার জন্য ফেসবুক ব্যবহার না করা বেছে নেওয়ার জন্য একটি দেশীয় প্রমাণীকরণ (এবং নিবন্ধকরণ) ব্যবস্থা রয়েছে।
বিবরণ:
- ধরে নিন আমরা কোনও ব্যবহারকারীকে আমাদের সিস্টেমের জন্য আলাদা অ্যাকাউন্ট / শংসাপত্র তৈরি না করে ফেসবুকে সাইন ইন করার বিকল্পটি দিতে চাই।
- কারণ আমরা আমাদের নিজস্ব নেটিভ অথুথ মেকানিজমকে সমর্থন করি (ব্যবহারকারীর নাম এবং পাসওয়ার্ড) আমাদের নিজস্ব ব্যবহারকারী আইডি রয়েছে এবং প্রাথমিক শংসাপত্র বৈধতার পরে পরবর্তী মিথস্ক্রিয়াগুলির জন্য ব্যবহৃত একটি প্রমাণীকরণ টোকেন প্রদান করে issue
আমি অবাক হয়েছি যে ফেসবুকের বিকাশকারী ডকুমেন্টেশনে এটির জন্য সর্বোত্তম অনুশীলন নেই। বিদ্যমান সমস্ত ডকুমেন্টেশন হয় ধরে নিচ্ছে আপনি কোনও ওয়েবসাইটে FB লেখক তৈরি করছেন, অথবা কোনও পরিষেবা নেই যা প্রমাণীকরণের প্রয়োজন নেই এমন একটি স্ট্যান্ডেলোন অ্যাপ্লিকেশন।
এটি কীভাবে ডিজাইন করা হবে সে সম্পর্কে আমার প্রাথমিক চিন্তাভাবনাগুলি তবে এটি সঠিক কিনা তা নিয়ে বৈধতা চাই।
- ক্লায়েন্ট ফেসবুক আইওএস লগইন পপ
- ইউআই ব্যবহারকারী ফেসবুক শংসাপত্রগুলির সাথে সাইন ইন করে এবং অ্যাক্সেস টোকেন পায়
- আইওএস অ্যাপটি আমাদের সার্ভারে অ্যাক্সেস টোকন পাস করে passes
আমাদের সার্ভারটি অ্যাক্সেস টোকেন ব্যবহার করে এফবি গ্রাফ এপিআইয়ের সাথে কথা বলেছে (ক) টোকেনটিকে বৈধতা দিন এবং (খ) সেই অ্যাক্সেস টোকেনের জন্য এফবি ব্যবহারকারী আইডি পান।
উদাহরণস্বরূপ আমাদের সার্ভারটি https: //راف.facebook.com/me/?access_token=XYZ কল করবে যা কোনও JSON অবজেক্টে প্রোফাইল তথ্য ফেরত দেবে
এটি বৈধ বলে ধরে নিই, আমাদের সার্ভারটি JSON অবজেক্ট থেকে ইউজার আইডিটি বের করে এবং ব্যবহারকারীর ইতিমধ্যে একটি অ্যাকাউন্ট আছে কিনা তা পরীক্ষা করে। যদি তা হয় তবে আমরা এই অধিবেশনটির জন্য ক্লায়েন্টকে আমাদের নিজস্ব লেখকের টিকিট দেই। যদি ব্যবহারকারীর কোনও অ্যাকাউন্ট না থাকে, আমরা ফেসবুক ব্যবহারকারী আইডি দিয়ে একটি নতুন তৈরি করি, আমাদের নিজস্ব অনন্য ইউজারআইডি বরাদ্দ করি এবং আমাদের লেখার টিকিট জারি করি।
- ক্লায়েন্ট তারপরে পরবর্তী মিথস্ক্রিয়ায় প্রমাণীকরণের টিকিট দেয় যা প্রমাণীকরণের প্রয়োজন।
এটি আমার কাছে সঠিক পদ্ধতির মতো বলে মনে হচ্ছে তবে নিশ্চিত নয় যে আমি খুব বেশি বেসিক কিছু মিস করছি এবং ভুল (জটিল) পথে নেমে যাচ্ছি কিনা।