Как я могу поделиться публикацией на Linkedin из приложения iOS - PullRequest
0 голосов
/ 22 октября 2019

Вот мой сценарий. У меня есть действительный accessToken, который я уже использовал для получения информации из профиля пользователя. Ниже приведены шаги, которые я пытался опубликовать, используя этот токен. Я получаю statusCode = 401

linkedinHelper.authorizeSuccess({ [unowned self] (lsToken) -> Void in

        self.writeConsoleLine("Login success lsToken: \(lsToken)")
        print("\(lsToken.accessToken ?? "")")
        let targetURLString = "https://api.linkedin.com/v1/people/~/shares?oauth2_access_token=\(lsToken.accessToken ?? "")&format=json"
        let payloadStr: String = "{\"comment\":\"Check out developer.linkedin.com!\",\"visibility\":{\"code\":\"anyone\"}}"

        // Initialize a mutable URL request object.
        let request = NSMutableURLRequest(url: NSURL(string: targetURLString)! as URL)

        // Indicate that this is a GET request.
        request.httpMethod = "POST"
        request.httpBody = payloadStr.data(using: String.Encoding.utf8)
        // Add the access token as an HTTP header field.
        request.addValue("Bearer \(lsToken.accessToken ?? "")", forHTTPHeaderField: "Authorization")
        request.addValue("application/json", forHTTPHeaderField: "Content-Type")
        request.addValue("json", forHTTPHeaderField: "x-li-format")

        // Make the request.
        let task: URLSessionDataTask = URLSession.shared.dataTask(with: request as URLRequest) { (data, response, error) -> Void in
            // Get the HTTP status code of the request.
            let statusCode = (response as! HTTPURLResponse).statusCode

            if statusCode == 201 {
                // Convert the received JSON data into a dictionary.

                guard ((try? JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers)) as? [String: Any]) != nil else {
                    print("Not containing JSON")
                    return
                }

                print("successfully posted.")
            }
        }
        task.resume()
    }, error: { [unowned self] (error) -> Void in

        self.writeConsoleLine("Encounter error: \(error.localizedDescription)")
    }, cancel: { [unowned self] () -> Void in

        self.writeConsoleLine("User Cancelled!")
    })

Ответы [ 2 ]

0 голосов
/ 26 октября 2019

В дополнение к точке зрения Кристофера, боюсь, что Linkedin, похоже, не обрабатывает очередь людей, ожидающих доступа к v2 API - мы запросили доступ 5 месяцев назад, ничего не изменилось. Мы использовали API версии v1 в течение 2 лет без каких-либо проблем, а затем однажды они отключили нас без способа перехода на новый API.

0 голосов
/ 22 октября 2019

LinkedIn v1 API больше не поддерживается. Вам нужно будет использовать их API v2: https://docs.microsoft.com/en-us/linkedin/consumer/integrations/self-serve/share-on-linkedin?context=linkedin/consumer/context

Ваш целевой URL должен использовать конечную точку ugcPosts:

POST https://api.linkedin.com/v2/ugcPosts

...