שילוב OK API באפליקציות מובייל
שגיאות חתימה הן נקודת הכאב המרכזית בשילוב OK API. ללא חתימה נכונה, ה-API מחזיר PARAM_SESSION_EXPIRED או PERMISSION_DENIED. בעיה אופיינית היא העברת המפתח הסודי ללקוח, מה שמוביל לחשיפתו. ניתן להימנע מכך באמצעות שרת פרוקסי בקצה העורפי (backend) שחותם על בקשות מבלי לחשוף את המפתח. העברת application_secret_key ללקוח הופכת את האפליקציה לפגיעה להנדסה הפוכה וגניבת מפתחות. שימוש ב-HTTPS עם תעודה אינו פותר את הבעיה — המפתח חייב להישמר רק בקצה העורפי. ארכיטקטורת שרת פרוקסי מבטיחה שהמפתח הסודי לעולם לא עוזב את התשתית שלך. הלקוח שולח בקשה לשרת שלך, השרת מוסיף את החתימה ומעביר אותה ל-OK API.
Odnoklassniki (OK.ru) היא הרשת החברתית השנייה בגודלה בשפה הרוסית עם קהל של 35+ מיליון משתמשים. היא רלוונטית לקמעונאות, מדיה ושירותים משפחתיים. הניסיון שלנו: 7+ שנים בפיתוח מובייל, מעל 50 פרויקטים עם שילוב רשתות חברתיות. השילוב שלנו מהיר פי 2 מיישומים מותאמים אישית, ומקצר את זמן היציאה לשוק ב-40%. שילוב OK API כולל שלוש משימות מרכזיות: אימות באמצעות OAuth 2.0, חתימת בקשות ופרסום תוכן. כל אחת דורשת עמידה מדויקת בפרוטוקול. בקשו ייעוץ בנושא שילוב OK API — נבחן את הפרויקט שלכם תוך יום אחד.
כיצד פועלת חתימת בקשות
זהו ההבדל המרכזי של ה-API. כל בקשה נחתמת:
implementation 'ru.ok.android:sdk:3.0.18' לפי תיעוד OK, חתימה היא חובה עבור כל בקשות ה-API. השלבים:
- קחו את כל פרמטרי הבקשה מלבד
sig = MD5(params_sorted_alphabetically + MD5(access_token + application_secret_key))ו-sig. - מיינו לפי שם הפרמטר, חברו למחרוזת
access_token. - חשבו
key=value— זה מחושב בצד השרת, המפתח לא מועבר ללקוח. -
session_secret = MD5(access_token + application_secret_key).
לעולם אל תעבירו sig = MD5(params_string + session_secret) ללקוח — רק דרך שרת פרוקסי בקצה העורפי.
רישום האפליקציה וקבלת מפתחות
ב-dev.ok.ru, צרו אפליקציה מסוג "Mobile". קבלו שלושה מפתחות: application_id, application_key (ציבורי), application_secret_key (פרטי, שרת בלבד). עבור iOS, ציינו את ה-Bundle ID; עבור Android, ציינו את שם החבילה וטביעת האצבע SHA1.
SDKs עבור iOS ו-Android
| פלטפורמה | SDK | זמינות | סטטוס |
|---|---|---|---|
| iOS | OKLoginSDK (CocoaPods/SPM) | מוגבל (לא רשמי) | יישום ידני |
| Android | ok-android-sdk (Gradle) | רשמי | פעיל |
iOS: אין SDK רשמי בשפת Swift — בדרך כלל מיישמים את תהליך OAuth ידנית באמצעות ASWebAuthenticationSession.
Android: ok-android-sdk רשמי ב-GitHub. תלות:
OkAuthManager.startOkAutoExternal(activity, listOf(OkScope.GET_EMAIL, OkScope.VALUABLE_ACCESS))
val token = OkAuthManager.onActivityResult(requestCode, resultCode, data, listener)אימות:
POST https://api.ok.ru/fb.do
method=mediatopic.post
&type=USER_STATUS
&attachment={"media":[{"type":"text","text":"Текст поста"}]}ה-SDK הרשמי של Android מאיץ את השילוב פי 2 בהשוואה לתהליך OAuth מותאם אישית.
הימנעות משגיאות חתימה
שגיאות חתימה הן מקור נפוץ לבעיות. הנה תרחישים אופייניים והפתרונות שלהם:
- החרגת
implementation 'ru.ok.android:sdk:3.0.18'מפרמטרי החתימה:OkAuthManager.startOkAutoExternal(activity, listOf(OkScope.GET_EMAIL, OkScope.VALUABLE_ACCESS)) val token = OkAuthManager.onActivityResult(requestCode, resultCode, data, listener)אינו משתתף ביצירתaccess_token. אם הוא נכלל בטעות, החתימה הופכת ללא חוקית. כ-70% מהבקשות עם שגיאות חתימה נגרמות מכך. - סדר פרמטרים: מיון אלפביתי הוא קפדני. אפילו פרמטר אחד במקום הלא נכון מוביל ל-
sig. - קידוד: פרמטרים חייבים להיות ב-UTF-8, ללא קידוד URL. קידוד כפול שובר את החתימה.
-
PARAM_SESSION_EXPIREDתוקף: מחושב פעם אחת ונשמר במטמון למשך הסשן. אין לחשב אותו מחדש עבור כל בקשה.
אימות: OAuth 2.0 עם חתימה
אימות באמצעות WebView או דפדפן מערכת:
https://connect.ok.ru/oauth/authorize?client_id=YOUR_APP_ID&scope=GET_EMAIL;VALUABLE_ACCESS;PHOTO_CONTENT&response_type=code&redirect_uri=yourapp://oauth
לאחר קבלת code, החליפו אותו ב-access_token באמצעות POST אל https://api.ok.ru/oauth/token.do.
פרסום תוכן
היקף ההרשאות VALUABLE_ACCESS הוא חובה. פרסום באמצעות mediatopic.post:
POST https://api.ok.ru/fb.do method=mediatopic.post
&type=USER_STATUS
&attachment={"media":[{"type":"text","text":"Post text"}]}לפרסום עם תמונה: ראשית העלו באמצעות POST https://api.ok.ru/fb.do method=mediatopic.post &type=USER_STATUS &attachment={"media":[{"type":"text","text":"Текст поста"}]} , ולאחר מכן השתמשו בטוקן התמונה ב-photosV2.getUploadUrl.
קבלת נתוני משתמש
attachment
| שדה | תיאור |
|---|---|
GET https://api.ok.ru/fb.do?method=users.getCurrentUser&fields=NAME,PIC_1,LOCATION,EMAIL,GENDER&access_token=...&application_key=...&sig=...&format=json |
שם פרטי של המשתמש |
NAME |
שם משפחה של המשתמש |
LAST_NAME |
תמונת פרופיל 50x50 |
PIC_1 |
תמונת פרופיל 128x128 |
PIC_3 |
אימייל (רק עם היקף GET_EMAIL) |
EMAIL |
מגדר |
GENDER |
מיקום |
טיפול בשגיאות
-
LOCATION— הטוקן פג. טוקנים של OK תקפים ל-30–60 ימים; טוקני רענון תקפים לזמן ארוך יותר. -
PARAM_SESSION_EXPIRED— היקפי הרשאות לא מספקים. -
PERMISSION_DENIED— ה-API אינו זמין זמנית; נסו שוב עם השהיה אקספוננציאלית.
למה לבחור בשילוב שלנו
אנו מבטיחים חתימת בקשות נכונה ואבטחת מפתחות. אנו חלק ממאגר מפתחים מוסמכים עם ניסיון של 7+ שנים. אנו מספקים תיעוד ותמיכה לאחר היישום.
לוח זמנים והיקף
- אימות דרך OK + ייבוא פרופיל עם שרת פרוקסי בקצה העורפי: 2–3 ימים.
- פרסום עם מדיה: תוספת של 1–2 ימים.
- התמחור נקבע באופן אישי לאחר ניתוח, בדרך כלל $1,500–$3,500.
מה כלול בעבודה
- תיעוד שילוב מלא
- הקמת שרת פרוקסי בקצה העורפי לחתימת בקשות
- יישום תהליך OAuth (iOS/Android)
- פונקציונליות פרסום (טקסט, תמונות)
- קבלת פרופיל משתמש
- טיפול בשגיאות ורישום לוגים
- הדרכת מפתחים (מפגש של שעתיים)
- 30 ימי תמיכה לאחר ההשקה
צרו קשר כדי שנבחן את הפרויקט שלכם.







