docs-api icon indicating copy to clipboard operation
docs-api copied to clipboard

[پشتیبانی]: احراز هویت از طریق API

Open baharasadi opened this issue 2 years ago • 19 comments

هدف

سلام من میخواستم از طریق api احراز هویت توکن بگیرم. توی داک حرفی از OTP یا همون رمز یکبار مصرف زده نشده اما مثل اینکه نیازه برای این ریکوئست. میخواستم ببینم راهی وجود نداره که بدونه OTP بشه گرفت توکن رو؟ چون کد شناسایی دو عاملی در حساب من فعال نیست اما همچنان با این ارور مواجه میشم.

محیط درخواست

  • ابزار درخواست (مرورگر/ابزار/برنامه/...)
  • زبان برنامه (cURL/Python/PHP/...)
  • محل درخواست (local/VPS/...)
  • درخواست IP (داخلی/خارجی)
  • ...

نحوه درخواست

curl 'https://api.nobitex.ir/auth/login/'
-X POST
-H "Content-Type: application/json"
--data $'{"username":"[email protected]","password":"**********","captcha":"api"}'

پاسخ دریافتی

{:status 400, :length 61, :body "{"non_field_errors":["OTP not provided"],"code":"MissingOTP"}"}

اطلاعات تکمیلی

No response

baharasadi avatar Sep 12 '23 11:09 baharasadi

حالا جدا از موضوع بالا که فکر میکنم لازم نیست برای اکانتی که شناسایی دو عاملی فعال نداره OTP نباید خواسته بشه یه مسئله دیگه داشتم. من خودم اومدم کد OTP رو جنریت کردم و توی body ریکوئست توی پارامتر X-TOTP دادم اما هنوز با همون خطای بالا که میگه Missing OTP مواجه میشم. ممنون میشم بررسی کنید این مورد رو. توی api داک هم اصلا در این مورد چیزی گفته نشده. حتی گفته نشده که چجوری این پارامتر رو بهش بدیم

baharasadi avatar Sep 12 '23 13:09 baharasadi

درود. بایستی OTP رو توی header ارسال کنی نه body این داکیومنت تا حدی خوب توضیح داده همراه با مثال https://documenter.getpostman.com/view/5722122/Szmcayjw#8f23dbb6-4899-4b64-9ee1-ac7024e7944d

navid-ahrary avatar Sep 13 '23 07:09 navid-ahrary

@navid-ahrary ممنونم از راهنماییتون ولی الان یه مسئله دیگه این هست که با وجود اینکه ریکوئست رو مطابق داک پستمن میدم خطایی میده که نمیتونه با credentials ارائه شده لاگین کنه در صورتی که کردنشالز داده شده درسته. ریکوئستم به شکل زیر هستش.

{:method :post, :headers {:X-TOTP "854595"}, :form-params {:username "", :password "", :remeber "yes", :captcha "api"}, :url "https://api.nobitex.ir/auth/login/", :content-type :json}, :reason-phrase "Forbidden", :status 403, :length -1, :body {"non_field_errors" : ["Unable to log in with provided credentials."]}}

baharasadi avatar Sep 17 '23 07:09 baharasadi

@navid-ahrary ممنونم از راهنماییتون ولی الان یه مسئله دیگه این هست که با وجود اینکه ریکوئست رو مطابق داک پستمن میدم خطایی میده که نمیتونه با credentials ارائه شده لاگین کنه در صورتی که کردنشالز داده شده درسته. ریکوئستم به شکل زیر هستش.

{:method :post, :headers {:X-TOTP "854595"}, :form-params {:username "", :password "", :remeber "yes", :captcha "api"}, :url "https://api.nobitex.ir/auth/login/", :content-type :json}, :reason-phrase "Forbidden", :status 403, :length -1, :body {"non_field_errors" : ["Unable to log in with provided credentials."]}}

سلام اگر username و pass رو هم به فرمت درست پاس ندید همین خطا رو میده ۱. همین user, pass رو توی postman تست کردید؟؟ ۲. از چه کتابخونه ای برای پیاده سازی سمت کدتون استفاده کردید؟

navid-ahrary avatar Sep 17 '23 07:09 navid-ahrary

@navid-ahrary ممنونم از راهنماییتون ولی الان یه مسئله دیگه این هست که با وجود اینکه ریکوئست رو مطابق داک پستمن میدم خطایی میده که نمیتونه با credentials ارائه شده لاگین کنه در صورتی که کردنشالز داده شده درسته. ریکوئستم به شکل زیر هستش. {:method :post, :headers {:X-TOTP "854595"}, :form-params {:username "", :password "", :remeber "yes", :captcha "api"}, :url "https://api.nobitex.ir/auth/login/", :content-type :json}, :reason-phrase "Forbidden", :status 403, :length -1, :body {"non_field_errors" : ["Unable to log in with provided credentials."]}}

سلام اگر username و pass رو هم به فرمت درست پاس ندید همین خطا رو میده ۱. همین user, pass رو توی postman تست کردید؟؟ ۲. از چه کتابخونه ای برای پیاده سازی سمت کدتون استفاده کردید؟

بدون توجه به کد هم من توی postman میزنم همین ارور رو میده. کتابخونه ارسال درخواست در کد هم clj-http هست.

baharasadi avatar Sep 17 '23 07:09 baharasadi

@navid-ahrary ممنونم از راهنماییتون ولی الان یه مسئله دیگه این هست که با وجود اینکه ریکوئست رو مطابق داک پستمن میدم خطایی میده که نمیتونه با credentials ارائه شده لاگین کنه در صورتی که کردنشالز داده شده درسته. ریکوئستم به شکل زیر هستش. {:method :post, :headers {:X-TOTP "854595"}, :form-params {:username "", :password "", :remeber "yes", :captcha "api"}, :url "https://api.nobitex.ir/auth/login/", :content-type :json}, :reason-phrase "Forbidden", :status 403, :length -1, :body {"non_field_errors" : ["Unable to log in with provided credentials."]}}

سلام اگر username و pass رو هم به فرمت درست پاس ندید همین خطا رو میده ۱. همین user, pass رو توی postman تست کردید؟؟ ۲. از چه کتابخونه ای برای پیاده سازی سمت کدتون استفاده کردید؟

بدون توجه به کد هم من توی postman میزنم همین ارور رو میده. کتابخونه ارسال درخواست در کد هم clj-http هست.

میتونید درخواست curl رو بفرستید؟

navid-ahrary avatar Sep 17 '23 07:09 navid-ahrary

@navid-ahrary ممنونم از راهنماییتون ولی الان یه مسئله دیگه این هست که با وجود اینکه ریکوئست رو مطابق داک پستمن میدم خطایی میده که نمیتونه با credentials ارائه شده لاگین کنه در صورتی که کردنشالز داده شده درسته. ریکوئستم به شکل زیر هستش. {:method :post, :headers {:X-TOTP "854595"}, :form-params {:username "", :password "", :remeber "yes", :captcha "api"}, :url "https://api.nobitex.ir/auth/login/", :content-type :json}, :reason-phrase "Forbidden", :status 403, :length -1, :body {"non_field_errors" : ["Unable to log in with provided credentials."]}}

سلام اگر username و pass رو هم به فرمت درست پاس ندید همین خطا رو میده ۱. همین user, pass رو توی postman تست کردید؟؟ ۲. از چه کتابخونه ای برای پیاده سازی سمت کدتون استفاده کردید؟

بدون توجه به کد هم من توی postman میزنم همین ارور رو میده. کتابخونه ارسال درخواست در کد هم clj-http هست.

میتونید درخواست curl رو بفرستید؟

curl 'https://api.nobitex.ir/auth/login/'
-X POST
-H "Content-Type: application/json" -H "X-TOTP: 707912"
--data $'{"username":"--------","password":"------------","captcha":"api"}'

baharasadi avatar Sep 17 '23 07:09 baharasadi

درخواست کاملن درسته. شاید سطح کاربری اکانت مجوز استفاده از API رو نداشته باشه یا هرچی. این مورد رو با پشتیبانی از طریق پرتال نوبیتکس گزارش بده. در ضمن من هم یه کاربرم مثل شمام و پشتیبان نوبیتکس نیستم. فقط خاستم اگه در توان هستم راهنمایی کنم

navid-ahrary avatar Sep 17 '23 08:09 navid-ahrary

خیلی ممنونم

baharasadi avatar Sep 17 '23 08:09 baharasadi

@baharasadi @navid-ahrary

سلام میتونید یه راهنمایی به من بدین برای پیاده سازی API هایی که نیاز به ارسال توکن داره،

پیغام خطای "detail": "اطلاعات برای اعتبارسنجی ارسال نشده است." نمایش داده میشه.

ایا نیازه برای توکن اعتبار سنجی انجام بشه؟ یا کار دیگه ای ؟

ممنون

najmeeh avatar Oct 08 '23 10:10 najmeeh

سلام. توکن رو با این فرمت تو header ارسال کنید: Authorization: Token {access token}

navid-ahrary avatar Oct 08 '23 10:10 navid-ahrary

@navid-ahrary ممنون از راهنماییت

توی Postman هم به همین شکل باید نوشته بشه؟

این خطا را میده "detail": "توکن غیر مجاز"

توکن را از قسمت تنظیمات حساب کاربریم برداشتم.

najmeeh avatar Oct 08 '23 12:10 najmeeh

از تو Postman درخواست curl رو بفرست

navid-ahrary avatar Oct 08 '23 12:10 navid-ahrary

درست شد. یه سوال دیگه: از کجا متوجه بشم که چه فیلدهایی اجباری هست و باید پر بشه؟ این خطا را میده الان { "status": "failed", "code": "ParseError", "message": "Missing choices value" }

najmeeh avatar Oct 08 '23 12:10 najmeeh

این داکیومنت کامل توضیح داده https://apidocs.nobitex.ir/#api هر فیلد رو مشخص کرده که الزامیه یا خیر

navid-ahrary avatar Oct 08 '23 12:10 navid-ahrary

ممنون @navid-ahrary از همین داکیومنت دارم استفاده میکنم

curl 'https://api.nobitex.ir/market/orders/add'
-X POST
-H "Authorization: Token yourTOKENhereHEX0000000000"
-H "content-type: application/json"
--data '{"type":"buy","srcCurrency":"btc","dstCurrency":"rls","amount":"0.6","price":520000000,"clientOrderId":"order1"}'

اینو تو پست من دارم تست میکنم، پارامترهای توی قسمت دیتا باید تو Params نوشته بشه یا Body?

najmeeh avatar Oct 08 '23 12:10 najmeeh

مقدار amount بایستی number باشه نه string

navid-ahrary avatar Oct 08 '23 13:10 navid-ahrary

حل شد تو Body باید میزدم

ممنون از لطفت

najmeeh avatar Oct 08 '23 13:10 najmeeh