شما برای اینکه بتوانید به access_token اینستاگرام که در اصل حکم مجوز را برای شما دارد برسید در کل ۲ راه دارید یکی از طریق اینکه خود کاربر به شما اجازه دسترسی بدهد و راه دیگر از طریق درخواست شما به سرور و غیر مستقیم میباشد که ما در این مقاله راه سرور را گفته و در مقاله بعدی از طریق کاربر .
این راه از امنیت بیشتری نسبت به راه کاربر برخوردار میباشد.
مرحله 1 : کاربر را به Authorization URL ما بفرستید
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code
در این بخش ما برای کاربر صفحه Login را آورده و سپس صفحه تأیید برای دسترسی اپلیکیشن شما به اطلاعات Instagram آن فرد را میآوریم.
نکته : اگر دسترسیهای بیشتر از “basic” میخواهید باید پارامتر دلخواه scope را تهیه کنید.
نکته : اگر میخواهید به حالتی خاص از سرور دسترسی داشته باشید باید پارامتر دلخواه “state” را تهیه کنید . برای مثال میتوانید از آن برای محافظت در برابر مسائل CSRF استفاده کنید.
مرحله 2 : دریافت پاسخ از طرف Instagram
وقتی یک کاربر اپلیکیشن شما را authorize میکند ، ما یک پاسخ به redirect_uri شما با یک پارامتر code که از آن در مرحله 3 استفاده میکنیم میفرستیم.
http://your-redirect-uri?code=CODE
این نکته را در نظر داشته باشید که host و مؤلفههای path ، redirect_URI شما دقیقا شبیه redirect_uri ثبت شده باشند ( دارای “/” باشند ) . شما ممکن است بخواهید query با پارامترهای اضافهتری در redirect_uri عرضه شده داشته باشید ، اگر میخواهید به صورت پویاتری رفتارتان را تغییر دهید مانند مثالهای زیر عمل کنید :
REGISTERED REDIRECT URI |
REDIRECT_URI PARAMETER PASSED TO /AUTHORIZE |
VALID? |
http://yourcallback.com/ |
http://yourcallback.com/ |
yes |
http://yourcallback.com/ |
http://yourcallback.com/?this=that |
yes |
http://yourcallback.com/?this=that |
http://yourcallback.com/ |
no |
http://yourcallback.com/?this=that |
http://yourcallback.com/?this=that&another=true |
yes |
http://yourcallback.com/?this=that |
http://yourcallback.com/?another=true&this=that |
no |
http://yourcallback.com/callback |
http://yourcallback.com/ |
no |
http://yourcallback.com/callback |
http://yourcallback.com/callback?type=mobile |
yes |
اگر درخواست شما برای قبول کردن اپلیکیشن شما از طرف کاربر رد شود پارامترهایی مانند پیغامهای زیر به redirect_uri شما ارسال میشود :
error: access_denied
error_reason: user_denied
error_description: The user denied your request
http://your-redirect-uri?error=access_denied&error_reason=user_denied&error_description=The+user+denied+your+request
در این مرحله شما باید به کاربر پیغام شکست (failure) بدهید.
مرحله 3 : درخواست access_token
حال باید code دریافت شده در مرحله قبل را در این مرحله برای دریافت access_token استفاده کنید. برای دریافت باید با متد POST کدی را که در مرحله قبل دریافت کردیم را همراه با بعضی از پارامترهای شناسایی اپلیکیشن به endpoint access_token اپلیکیشن بفرستید. موارد زیر مورد نیاز هستند :
client_id : your client id
client_secret : your client secret
grant_type : authorization_codeis currently the only supported value
redirect_uri : the redirect_uri you used in the authorization request. Note: this has to be the same value as in the authorization request.
code : the exact code you received during the authorization step.
این یک نمونه میباشد :
curl -F 'client_id=CLIENT_ID' \
-F 'client_secret=CLIENT_SECRET' \
-F 'grant_type=authorization_code' \
-F 'redirect_uri=AUTHORIZATION_REDIRECT_URI' \
-F 'code=CODE' \
https://api.instagram.com/oauth/access_token
اگر درخواست موفقیت آمیز باشد ، این صدا زدن پکیج منظمی از OAuth Token میدهد که میتوانید با آن درخواستهای شناسایی شده به API بفرستید . مانند زیر :
{
"access_token": "fb2e77d.47a0479900504cb3ab4a1f626d174d2d",
"user": {
"id": "1574083",
"username": "snoopdogg",
"full_name": "Snoop Dogg",
"profile_picture": "..."
}
}
برای خواندن راه دوم احراز هویت یعنی احراز هویت از طریق کاربر به مقاله دریافت access_token با استفاده از روش CIient-side مراجعه کنید.