GithubHelp home page GithubHelp logo

ok-ios-sdk's Introduction

Join our chat on the app: Telegram Messenger, https://telegram.me/joinchat/An0xvgHDHvWlSWNQWuzOkQ

###OK IOS SDK 2.0.14

Join the chat at https://gitter.im/apiok/ok-ios-sdk

If you are looking for the old version, please checkout tag 1.0 ####How to use First you should select External and IOS platforms and enable Client OAuth authorization using ok.ru app edit form. Also your should send request for LONG_ACCESS_TOKEN to api-support or you can simple not request for LONG_ACCESS_TOKEN permission during OAuth authorization.

Add ok{appId} schema to your app Info.plist file. For example ok12345 if your app has appId 12345. Don't forget add ok{appId}://authorize to allowed redirect urls for your application in ok.ru app profile. Also you should add next block to your Info.plist file.

 <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>

Add OKSDK.h and OKSDK.m to your project. For example you can use git submodule.

Init your sdk in AppDelegate didFinishLaunchingWithOptions

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    OKSDKInitSettings *settings = [OKSDKInitSettings new];
    settings.appKey = @"ABCDEFGABCDEGF";
    settings.appId = @"12345";
    settings.controllerHandler = ^{
        return self.window.rootViewController;
    };
    [OKSDK initWithSettings: settings];
    return YES;
}

Add openUrl to AppDelegate openURL

-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    [OKSDK openUrl:url];
    return YES;
}

To understand how to interact with OKSDK please look at examples repository

ok-ios-sdk's People

Contributors

88z avatar andrei200287 avatar bernikovich avatar dmitry-grytsovets avatar dmivanov avatar gitter-badger avatar idan676 avatar maximgavrilov avatar novkostya avatar seaburg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

ok-ios-sdk's Issues

SPM support

Планируется ли поддержка Swift Package Manager?

Убрать использование advertisingIdentifier

Apple не любит, если приложение использует advertisingIdentifier. Хорошо бы убрать его использование из библиотеки. Или хотя бы добавить ifdef-ключ, чтобы можно было отключать при компиляции.

NSURLConnection is deprecated

Could you please consider replacing deprecated NSURLConnection call with NSURLSession? Xcode right now highlights a warning:

.../OKSDK.m:301:22: 'sendAsynchronousRequest:queue:completionHandler:' is deprecated: first deprecated in iOS 9.0 - Use [NSURLSession dataTaskWithRequest:completionHandler:] (see NSURLSession.h

Apple rejects builds that authorize with Safari

10.6 Details

  • Upon launching the app and tapping on some social networks buttons, a web page in mobile Safari opens for logging in, then returns the user to the app. The user should be able to log in without opening Safari first.

Please make UIWebView authorization

openUrl return value

Приложение, использующее OK SDK, может быть запущено с самым разными URL'ами. Было бы гораздо удобнее, если бы метод openUrl возвращал BOOL. YES, если URL относится к OK и NO, в противном случае.

Не работает авторизация

У меня возникла проблема авторизации с помощью Одноклассников
Я использую ваш SDK, настроил приложение как указано на https://apiok.ru/dev/sdk/ios

В приложении при вызове метода авторизации (при нажатии кнопки), отображается webview со страницей авторизации, после ввода логина и пароля отображается экран (см. Скриншот), на котором есть кнопка "Log in”. При ее нажатии приложение никак не реагирует, хотя отправляет следующий запрос:

https://connect.ok.ru/dk?st.cmd=OAuth2Permissions&st.layout=a&st.scope=LONG_ACCESS_TOKEN&st.response_type=token&st.show_permissions=off&st.redirect_uri=ok{APP_ID, удален}%2F%2Fauthorize&st.client_id={CLIENT_ID, удален}&cmd=OAuth2Permissions

В ответ отдается 302 код ответа сервера и следующие данные:
fr.posted | set
fr.token | {здесь токен}
button_accept_request | clicked

Отдельно замечу, что следующие методы в AppDelegate при этом не вызываются:
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool

При попытке авторизоваться выдает ошибку

-canOpenURL: failed for URL: "okauth://authorize?client_id=1238296320&scope=VALUABLE_ACCESS;LONG_ACCESS_TOKEN;GROUP_CONTENT;PUBLISH_TO_STREAM;GROUP_CONTENT;LONG_ACCESS_TOKEN&redirect_uri=ok1238296320://authorize&response_type=token&layout=a&" - error: "This app is not allowed to query for scheme okauth"

В info.plist все прописано

Как я могу узнать что сессия не просрочена?

В OKSDK есть методы авторизации и получения текущего токена, но нет информации о свежести сессии. Можно как то убедиться что сессия еще не просрочена и можно выполнять запросы к API?

PARAM_SESSION_KEY : Invalid session key

При вызове [OKSDK invokeMethod:@"users.getCurrentUser" arguments:@{} success:^(NSDictionary* data) {}];. Получаю следующий ответ "PARAM_SESSION_KEY : Invalid session key". Подскажите пожалуйста, что делаю не так!

Использовать openURL:options:completionHandler:

Начиная с iOS 9 метод openURL: открывает диалог с разрешением перейти в другое приложение. Если отказаться, то процесс авторизации оказывается в "подвешенном" состоянии, т. к. никаких ошибок не приходит. При возможности надо использовать новый метод openURL:options:completionHandler: и при неудаче возвращать из библиотеки ошибку авторизации.

Пример того, как это сделано в библиотеке у ВКонтакте:
VKCOM/vk-ios-sdk@1d472a0

Проблемы с авторизация через приложение

  1. Перехожу в приложение ОК для авторизации.
  2. Сворачиваю приложение ОК и возвращаюсь в свое.
  3. Опять перехожу в приложение ОК для авторизации.

И во время второго такого захода кнопка "Allow" не срабатывает. При этом если попытаться авторизироваться в третий раз, то все проходит как надо. Такое же поведение обнаружил в приложении Mamba.

expires_in параметр с authorizeWithPermissions

authorizeWithPermissions в ИОС SDK возвращает только два параметра - accessToken & refreshtoken

Можно как-то получить параметр expires_in во время ауторизации authorizeWithPermissions?

Не срабатывает авторизация через SDK

Предусловие:

  • Приложение ОК установлено;
  • Пользователь НЕ авторизован в ОК

При попытке авторизоваться через authorizeWithPermissions приложение ОК открывается. При авторизации в нем коллбэк метода не срабатывает. Вероятно в SDK не предусмотрен такой сценарий. Хотя иногда при попытке авторизации через приложение с залогиненым юзером выскакивает оранжевая модалка для авторизации.

В приложении Юла этот сценарий можно повторить. Только там еще и спиннер продолжает крутиться, ожидая ответа, если вернуться в приложение.

Shared posts are not seen on my wall

I entered my credentials to the sample app (appid, key, secret), and got success message when I posted something. How ever, there is nothing shown on my wall.

What am I missing ?

openUrl после рестарта приложения

После переключения приложения на другое(приложение OK или браузер в данном случае) может привести к тому, что оно будет выгружено из памяти. После прохождения авторизации результат передаётся в приложение через URL.

Проблема в том, что в случае с OK SDK это не сработает из-за того, что запрос на авторизацию регистрируется в completitionHandlers, а после перезапуска приложения это конечно же теряется. Таким образом если приложение потребляет сравнительно много памяти, то авторизация через ОК для него может просто не срабатывать.

При получении списка uid друзей возвращается Unknown api response

Доброго времени суток!
Авторизовался, получил токен. Пытаюсь получить список друзей через метод

[OKSDK invokeMethod:@"friends.get" arguments:@{} success:... error:...];

но возвращает ошибку Error Domain=ru.ok.sdk Code=4 "unknown api response. Однако сам запрос выполняется корректно и ответ со списком друзей в ответе приходит.

Error code 100

After authorization with permissions @[@"VALUABLE_ACCESS",@"LONG_ACCESS_TOKEN",@"PHOTO_CONTENT"]
I call invokeMethod:@"users.getCurrentUser"
and its return this json

{
    "error_code" = 100;
    "error_data" = "<null>";
    "error_msg" = "PARAM : Selected platform is not allowed for this application";
}

I use SDK many times and work perfectly until yesterday.
I already tested it on different devices with different ios versions.

Ошибка permissions.error.login-by-api-failed iOS 14

Добрый день)
У меня вопрос по поводу ошибки "permissions.error.login-by-api-failed" она специфичная появилась с iOS 14. Воспроизводится единожды на новой версии приложения. При повторных переустановках билда и авторизации через ОК ошибка не повторится.
В интернетах ничего не нашел.
Можете как нибудь посодействовать или объяснить как поправить баг?
Спасибо!)
permissions error

showWidget не показывает виджет

Используется метод: OKSDK.showWidget("WidgetMediatopicPost", ...)

Но никакого окна не появляется для подтверждения размещения поста.

В логах:
Warning: Attempt to present <OKSFSafariViewController: 0xe1a3760> on <MainNavigation: 0x16a27400> which is already presenting <SocialViewController: 0x1723da00>

Разрешения указываю:
["VALUABLE_ACCESS", "LONG_ACCESS_TOKEN"]

Версия SDK: 2.0.11
Версия iOS: 10.2.1

С чем может быть связана ошибка?

Ошибка Error Domain=ru.ok.sdk Code=2 "ok1234567890://authorize schema should be registered for current app"

Вызов метода

[OKSDK authorizeWithPermissions:@[@"VALUABLE_ACCESS"] success:^(id response){
        NSLog(@"response: %@", response);
    }error:^(NSError *error){
        NSLog(@"error: %@", error);
    }];

приводит к ошибке Error Domain=ru.ok.sdk Code=2 "ok1234567890://authorize schema should be registered for current app.
В настройках приложения на сайте занесено в список разрешенных redirect_uri занесены http://api.ok.ru/blank.html
ok1234567890://authorize
В настройках ios приложения также занесены параметры identifier: okurl, URL schemes: ok1234567890.
В info.plist в LSApplicationQueriesSchemes занесено okauth.
Что я делаю не так?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.