پیامرسان گپ این امکان را فراهم آورده است تا کاربران در صورت دادن مجوزهای مورد نیاز بتوانند از طریق حساب کاربری گپ خود در سایر وب سایت ها و وب اپلیکیشن ها لاگین کنند. بدین منظور وقتی کاربر روی لینک لاگین با گپ کلیک می کند به صفحه احراز هویت گپ فرستاده می شود. چنانچه کاربر اجازه دسترسی به اطلاعات حساب کاربری خود را به سایت یا اپلیکیشن مورد نظر بدهد (یا از قبل داده باشد) گپ کد احراز هویت را به سایت یا اپلیکیشن مورد نظر ارسال می کند. از این کد برای به دست آوردن توکن دسترسی استفاده می شود. با استفاده از توکن دسترسی سایت یا اپلیکیشن مذکور قادر به دستیابی به اطلاعات کاربر در گپ خواهد بود که از آن در فرآیند ثبت نام و لاگین استفاده می شود.
برای فعالسازی قابلیت لاگین با گپ باید یک بات با oAuth فعال داشته باشید. بدین منظور وارد پورتال مای گپ خود شوید و از طریق گزینه بات پلتفرم وارد لیست بات ها شوید و گزینه OAuth را برای یکی از بات های موجود فعال کنید یا بات جدیدی با این قابلیت بسازید.
شما باید یک آدرس بازگشت تعیین کنید که برنامه ی احراز هویت گپ کد احراز هویت را به آن ارسال کند. همچنین در این مرحله یک client id برای بات شما تولید می شود که در ادامه به آن نیاز خواهید داشت. همچنین توکن بات مورد نظر حکم client secret را که در مراحل بعد به آن نیاز خواهید داشت دارد.
در صورتیکه مرحله قبل با موفقیت به انجام رسیده است و کد احراز هویت را دریافت کرده اید باید آدرس زیر را فراخوانی کنید و پارامترهای مورد نیاز را به آن ارسال کنید.
1 | client_id | id مربوط به کلاینت که در مرحله فعال سازی OAuth برای بات خود دریافت کرده اید. |
---|---|---|
2 | grant_type | نوع مجوز که مقدار آن را برابر code قرار دهید. درصورتیکه می خواهید با استفاده از refresh_token؛ access_token جدید دریافت کنید مقدار آن رابرابر refresh_token قرار دهید. |
3 | code | کد احراز هویت که در مرحله قبل دریافت کرده اید. |
4 | client_secret | کد امنیتی که در واقع همان توکن بات شماست که OAuth را برای آن فعال کرده اید. |
5 | refresh_token | در صورتیکه access_token شما منقضی شده است و می خواهید توکن جدید دریافت کنید این پارامتر را به همراه grant_type = refresh_token ارسال نمایید. |
اگر پارامترها را به درستی ارسال کرده باشید اطلاعات کاربر به همراه access_token و refresh_token را دریافت خواهید کرد. برای به حداقل رساندن درخواست ها این دو پارامتر را ذخیره کنید. طول عمر این پارامترها از مقادیر expires_in و expires_on که به ترتیب بیانگر طول عمر توکن و زمان انقضای آن می باشند قابل تشخیص است.
{
"status": "success",
"message": "ok",
"data": {
"publicInfo": {
"gap_id": 1114959,
"nickname": "ali",
"username": "",
"avatar": {
"64": null,
"128": null,
"256": null,
"512": null
},
"chat_id": 0
},
"token_type": "bearer",
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzZXJ2aWNlX2lkIjp7IiRvaWQiOiI1YWY3ZTE2NzBmYTcyNTA0YmE1NzgyNzUifSwiZ2FwX3VzZXJfaWQiOjExMTQ5NTksImNvbnRlbnRfcHJvdmlkZXJfaWQiOnsiJG9pZCI6IjViMzllMzI0ZTNhZGU5MTc5MjY4NjRlNCJ9LCJpYXQiOjE1MzM4MDAwMjYsImV4cCI6MTUzMzgwMzYyNn0.5fveXG9Ed76nvk3rc1R-oht0UuXlAz3dMXTTGXfwow8",
"refresh_token": "d89454a16802126888da5b3e53940de6857bd179",
"expire_in": 3600,
"expire_on": 1533803626
},
"code": 200
}
{
"status": "error",
"message": "Invalid Authorization Code ! ",
"code": 401
}
پس از منقضی شدن access_token با استفاده از refresh_token می توانید access_token جدید دریافت کنید. بدین منظور باید پارامتر grant_type را برابر refresh_token قرار دهید و به همراه refresh_token و client_secret ارسال نمایید.
{
"status": "success",
"message": "ok",
"code": 200,
"data": {
"token_type": "bearer",
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzZXJ2aWNlX2lkIjp7IiRvaWQiOiI1YWY3ZTE2NzBmYTcyNTA0YmE1NzgyNzUifSwiZ2FwX3VzZXJfaWQiOjExMTQ5NTksImNvbnRlbnRfcHJvdmlkZXJfaWQiOnsiJG9pZCI6IjViMzllMzI0ZTNhZGU5MTc5MjY4NjRlNCJ9LCJpYXQiOjE1MzQwNjkwODcsImV4cCI6MTUzNDA3MjY4N30.Ud-7tVdYtSZ-M8aHTpAvozDhTuBJ0w2Plug36FsC24c",
"refresh_token": "7c71ab48d9015c423b228ab0212a7a07f4157214",
"expire_in": 3600,
"expire_on": 1534072687
}
}
{
"status": "error",
"message": "invalid request !",
"code": 400
}