Swiftyinsta: Tanyakan tentang kredensial.kode

Dibuat pada 9 Okt 2019  ·  19Komentar  ·  Sumber: TheM4hd1/SwiftyInsta

Halo,
Tolong beritahu aku. Saya punya masalah.

Dengan permintaan login func, saya mendapatkan SMS dengan kode yang saya daftarkan di kredensial.kode = "121332".
Saya tidak dapat mengirim kode ini kembali. Bagaimana cara melakukannya? Apa yang saya lakukan salah?

Ini kode saya my

kelas ViewController: UIViewController {

let handler = APIHandler()    
override func viewDidLoad() {
    super.viewDidLoad()
    login()
}

func login() {
    var credentials = Credentials(username: "username", password: "password", verifyBy: .text)
    credentials.code = "121332"

    handler.authenticate(with: .user(credentials)) { [weak self] in
        switch $0 {
        case .success(let response, _):
            print("Login successful.")
            guard let key = response.persist() else { return print("`Authentication.Response` could not be persisted.") }
            UserDefaults.standard.set(key, forKey: "current.account")
            UserDefaults.standard.synchronize()

            self?.getCurrentUser()
        case .failure(let error):
            if error.requiresInstagramCode {
            } else {
            }
        }
    }
}

func getCurrentUser() {
    self.handler.users.user(.me) { ( result: Result<User?, Error>) in
        switch result {
        case .success(let user):
            let username = user?.name ?? "John Doe"
            print("success, username: \(username)")
        case .failure(let error):
            print("failure, error: \(error.localizedDescription)")
        }
    }
}

}

bug help wanted

Komentar yang paling membantu

Maaf saya belum berhasil memposting contoh, saya benar-benar sibuk.
Saya harap saya bisa memposting satu segera.

Semua 19 komentar

Anda perlu memindahkan credentials.code = "121332" setelah pengendali otentikasi mengembalikan .failure(let error) .
Melakukannya secara asinkron di dalam if error.requiresInstagramCode { } mungkin merupakan pilihan yang baik.

Masalah masih ada
https://prnt.sc/pgyf15
rupanya tidak mengirim kode ini

Coba tanpa breakpoint. Karena dengan cara ini Anda sebenarnya menghentikan kode saat mencapai baris itu, sehingga tidak dapat menyebarkan permintaan apa pun saat credentials.code berubah. :merah:
Jika masih tidak mengubah apa pun, coba pertahankan credentials juga (walaupun itu seharusnya tidak menjadi masalah dari apa yang saya lihat dari cuplikan Anda, tbh).

https://prnt.sc/pgynah
Masalah masih ada. Saya ingin menarik perhatian Anda, saya memberikan kredensial ke .user, karena jika ada .credentials (seperti pada contoh), maka terjadi kesalahan

.user adalah cara yang benar.
.credentials digunakan di development dan saya lupa mengubahnya. Terima kasih telah menunjukkan. Aku akan mengubahnya sekarang.
Saya masih tidak mendapatkan kesalahan karena saya mengujinya dengan cara saya dan semuanya berfungsi sebagaimana mestinya

Karena saya tidak dapat melihatnya di tangkapan layar terakhir Anda, apakah itu benar-benar tidak berfungsi dengan mempertahankan credentials seperti itu, dan kemudian memperbarui code setelah mengembalikan Error membutuhkannya ?
Karena itu tampaknya satu-satunya hal yang Anda lakukan berbeda, tbh

Jika saya menggunakan .credentials, saya memiliki kesalahan ini https://prnt.sc/pgyvlx
Saya memposting semua kode saya di pesan utama.
Apakah saya melakukan sesuatu yang salah?

bagaimana Anda menguji mengirim pesan kembali?

.user adalah yang benar, .credentials tidak sengaja disimpan dalam dokumentasi.
Pindahkan deklarasi credentials bawah handler . Sebagai properti "ditahan".
Ini harus bekerja kemudian.

let handler = APIHandler()
let credentials = Credentials( … )

func login() {
  …
}

itu semua kode, toh ada kesalahan (

impor UIKit
impor SwiftyInsta

kelas ViewController: UIViewController {
biarkan penangan = APIHandler()
kredensial var = Kredensial(nama pengguna: "nama pengguna", kata sandi: "kata sandi", verifikasiBy: .text)

override func viewDidLoad() {
    super.viewDidLoad()
    login()
}

func login() {

    handler.authenticate(with: .user(credentials)) { [weak self] in
        switch $0 {
        case .success(let response, _):
            print("Login successful.")
            guard let key = response.persist() else { return print("`Authentication.Response` could not be persisted.") }
            UserDefaults.standard.set(key, forKey: "current.account")
            UserDefaults.standard.synchronize()
            self?.getCurrentUser()
        case .failure(let error):
            if error.requiresInstagramCode {
                self!.credentials.code = "178063"
            } else {
            }
        }
    }
}

func getCurrentUser() {
    self.handler.users.user(.me) { ( result: Result<User?, Error>) in
        switch result {
        case .success(let user):
            let username = user?.name ?? "John Doe"
            print("success, username: \(username)")
        case .failure(let error):
            print("failure, error: \(error.localizedDescription)")
        }
    }
}

}

Dan apa kesalahan kali ini? @rmelnik7777

09-10-2019 17:32:25.333892+0300 TestInsta[9747:281440] [] nw_connection_receive_internal_block_invoke [C1] Menerima balasan gagal dengan kesalahan "Operasi dibatalkan"

https://prnt.sc/pgzldk

Itu sebenarnya terlihat seperti semacam peringatan _Xcode_, bukan sesuatu yang dihasilkan SwiftyInsta

Saya memiliki masalah serupa. Tidak jelas bagaimana masuk ke blok kegagalan untuk mengatur kode otorisasi dari SMS. Bisakah Anda membantu dengan sebuah contoh?

Halo saya punya masalah yang sama juga. Bisakah Anda membagikan contoh aplikasi yang berfungsi untuk autentikasi dua faktor?

@sbertix akan segera memposting contoh yang jelas.
bersabarlah.

Maaf saya belum berhasil memposting contoh, saya benar-benar sibuk.
Saya harap saya bisa memposting satu segera.

Saya benar-benar baru dengan Swift tetapi mungkin saya menemukan bug:

  • Di sini , Anda membuat salinan yang dapat diubah dari user (contoh dari Credentials ) dan menetapkan nilai properti handler.
  • Tetapi di baris ini , ini adalah instance asli dari Credentials , jadi nilai properti handler tidak disetel. Fungsi authentification.code() tidak dipanggil.

Saya tidak memiliki kesempatan untuk menyelidikinya lebih lanjut tetapi mungkin juga demikian. Rupanya pada komit saat ini Credentials dideklarasikan sebagai struct dan bukan class , yang merupakan premis dari semua referensi yang lewat.
Tampaknya itu adalah sesuatu yang saya perbaiki di sepanjang jalan dalam versi lokal saya, atau beberapa perubahan yang saya dorong ke master sepanjang jalan, atau bahkan mungkin bukan masalah itu sendiri.
Saya akan mencoba meninjau semuanya untuk # 96, tetapi saya belum punya waktu akhir-akhir ini. Permintaan maaf.
@Lyusan

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

sbertix picture sbertix  ·  8Komentar

effecttwins picture effecttwins  ·  16Komentar

canaksoy picture canaksoy  ·  6Komentar

sbertix picture sbertix  ·  3Komentar

sbertix picture sbertix  ·  27Komentar