Swiftyinsta: 자격 증λͺ…에 λŒ€ν•΄ λ¬Έμ˜ν•˜μ‹­μ‹œμ˜€.μ½”λ“œ

에 λ§Œλ“  2019λ…„ 10μ›” 09일  Β·  19μ½”λ©˜νŠΈ  Β·  좜처: TheM4hd1/SwiftyInsta

μ•ˆλ…•ν•˜μ„Έμš”,
말해 μ£Όμ„Έμš”. λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

func λ‘œκ·ΈμΈμ— λŒ€ν•œ μš”μ²­μœΌλ‘œ λ‚˜λŠ” credentials.code = "121332"에 λ“±λ‘ν•œ μ½”λ“œκ°€ ν¬ν•¨λœ SMSλ₯Ό λ°›μ•˜μŠ΅λ‹ˆλ‹€.
이 μ½”λ“œλ₯Ό λ‹€μ‹œ 보낼 수 μ—†μŠ΅λ‹ˆλ‹€. 그것을 ν•˜λŠ” 방법? λ‚΄κ°€ 뭘 잘λͺ»ν•˜κ³  있죠?

이것은 λ‚΄ μ½”λ“œμž…λ‹ˆλ‹€.

클래슀 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

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ£„μ†‘ν•©λ‹ˆλ‹€. 아직 예제λ₯Ό κ²Œμ‹œν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€. μ œκ°€ 정말 λ°”λΉ΄μŠ΅λ‹ˆλ‹€.
λ‚˜λŠ” λ‚΄κ°€ 곧 ν•˜λ‚˜λ₯Ό κ²Œμ‹œν•  수 있기λ₯Ό λ°”λžλ‹ˆλ‹€.

λͺ¨λ“  19 λŒ“κΈ€

인증 μ²˜λ¦¬κΈ°κ°€ .failure(let error) λ°˜ν™˜ν•œ ν›„ credentials.code = "121332" λ₯Ό 이동해야 ν•©λ‹ˆλ‹€.
if error.requiresInstagramCode {Β } λ‚΄λΆ€μ—μ„œ λΉ„λ™κΈ°μ‹μœΌλ‘œ μˆ˜ν–‰ν•˜λŠ” 것이 쒋은 μ˜΅μ…˜μΌ 수 μžˆμŠ΅λ‹ˆλ‹€.

λ¬Έμ œκ°€ μ—¬μ „νžˆ μ‘΄μž¬ν•©λ‹ˆλ‹€
https://prnt.sc/pgyf15
λΆ„λͺ…νžˆμ΄ μ½”λ“œλ₯Ό 보내지 μ•ŠμŠ΅λ‹ˆλ‹€

쀑단점 없이 μ‹œλ„ν•˜μ‹­μ‹œμ˜€. μ΄λ ‡κ²Œ ν•˜λ©΄ μ½”λ“œκ°€ ν•΄λ‹Ή 행에 도달할 λ•Œ μ‹€μ œλ‘œ μ€‘μ§€λ˜λ―€λ‘œ credentials.code λ³€κ²½μœΌλ‘œ μš”μ²­μ„ μ „νŒŒν•  수 μ—†μŠ΅λ‹ˆλ‹€. :λΆ‰νžˆλ‹€:
κ·Έλž˜λ„ 아무 것도 λ³€κ²½λ˜μ§€ μ•ŠμœΌλ©΄ credentials 도 μœ μ§€ν•΄ λ³΄μ‹­μ‹œμ˜€(단, tbh μŠ€λ‹ˆνŽ«μ—μ„œ λ³Ό 수 μžˆλŠ” λ¬Έμ œλŠ” μ•„λ‹˜).

https://prnt.sc/pgynah
λ¬Έμ œκ°€ μ—¬μ „νžˆ μ‘΄μž¬ν•©λ‹ˆλ‹€. 주의λ₯Ό 기울이고 μ‹ΆμŠ΅λ‹ˆλ‹€. 자격 증λͺ…을 .userμ—κ²Œ μ „λ‹¬ν•©λ‹ˆλ‹€. .credentials(μ˜ˆμ œμ—μ„œμ™€ 같이)κ°€ 있으면 였λ₯˜κ°€ λ°œμƒν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

.user κ°€ μ˜¬λ°”λ₯Έ λ°©λ²•μž…λ‹ˆλ‹€.
.credentials 이 development μ—μ„œ μ‚¬μš©λ˜μ—ˆκ³  λ³€κ²½ν•˜λŠ” 것을 μžŠμ—ˆμŠ΅λ‹ˆλ‹€. 지적해 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. μ§€κΈˆ λ°”λ‘œ λ³€κ²½ν•˜κ² μŠ΅λ‹ˆλ‹€.
λ‚΄ λ°©μ‹λŒ€λ‘œ ν…ŒμŠ€νŠΈν•˜κ³  있고 λͺ¨λ“  것이 μ˜λ„ν•œ λŒ€λ‘œ μž‘λ™ν•˜κΈ° λ•Œλ¬Έμ— μ—¬μ „νžˆ 였λ₯˜κ°€ λ°œμƒν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ πŸ€”

λ§ˆμ§€λ§‰ μŠ€ν¬λ¦°μƒ·μ—μ„œ λ³Ό 수 μ—†κΈ° λ•Œλ¬Έμ— credentials 그런 μ‹μœΌλ‘œ μœ μ§€ν•˜κ³  Error ν•„μš”ν•œ code λ₯Ό μ—…λ°μ΄νŠΈν•˜λ©΄ μ‹€μ œλ‘œ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆκΉŒ? ?
당신이 λ‹€λ₯Έ 일을 ν•˜λŠ” 것은 그것뿐인 것 κ°™μœΌλ‹ˆκΉŒ, tbh 😞

.credentialsλ₯Ό μ‚¬μš©ν•˜λ©΄ https://prnt.sc/pgyvlx 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.
λ‚΄ λͺ¨λ“  μ½”λ“œλ₯Ό κΈ°λ³Έ λ©”μ‹œμ§€μ— κ²Œμ‹œν–ˆμŠ΅λ‹ˆλ‹€.
λ‚΄κ°€ λ­”κ°€ 잘λͺ»ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ?

λ©”μ‹œμ§€λ₯Ό λ‹€μ‹œ λ³΄λ‚΄λŠ” ν…ŒμŠ€νŠΈλŠ” μ–΄λ–»κ²Œ ν•©λ‹ˆκΉŒ?

.user 이 μ˜¬λ°”λ₯Έ κ²ƒμž…λ‹ˆλ‹€. .credentials κ°€ μ‹€μˆ˜λ‘œ λ¬Έμ„œμ— λ³΄κ΄€λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
λ‹Ήμ‹ μ˜ μ„ μ–Έ 이동 credentials μ•„λž˜ handler λ₯Ό. "보유" μ†μ„±μœΌλ‘œ.
그러면 μž‘λ™ν•΄μ•Ό ν•©λ‹ˆλ‹€.

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

func login() {
  …
}

λͺ¨λ“  μ½”λ“œ, μ–΄μ¨Œλ“  였λ₯˜κ°€ μžˆμŠ΅λ‹ˆλ‹€(

UIKit κ°€μ Έμ˜€κΈ°
κ°€μ Έμ˜€κΈ° SwiftyInsta

클래슀 ViewController: UIViewController {
ν•Έλ“€λŸ¬ = APIHandler() ν•˜μž
var 자격 증λͺ… = 자격 증λͺ…(μ‚¬μš©μž 이름: "μ‚¬μš©μž 이름", μ•”ν˜Έ: "μ•”ν˜Έ", verifyBy: .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)")
        }
    }
}

}

그리고 μ΄λ²ˆμ—λŠ” 였λ₯˜κ°€ λ¬΄μ—‡μž…λ‹ˆκΉŒ? @rmelnik7777

2019-10-09 17:32:25.333892+0300 TestInsta[9747:281440] [] nw_connection_receive_internal_block_invoke [C1] "μž‘μ—…μ΄ μ·¨μ†Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€" 였λ₯˜λ‘œ 응닡 μˆ˜μ‹  μ‹€νŒ¨

https://prnt.sc/pgzldk

μ‹€μ œλ‘œ SwiftyInsta μƒμ„±λœ 것이 μ•„λ‹ˆλΌ μΌμ’…μ˜ _Xcode_ 경고처럼 λ³΄μž…λ‹ˆλ‹€. πŸ€”

λΉ„μŠ·ν•œ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. SMSμ—μ„œ 인증 μ½”λ“œλ₯Ό μ„€μ •ν•˜κΈ° μœ„ν•΄ μ‹€νŒ¨ λΈ”λ‘μœΌλ‘œ λ“€μ–΄κ°€λŠ” 방법이 λͺ…ν™•ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ λ„μ™€μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ?

μ•ˆλ…•ν•˜μ„Έμš” 저도 같은 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. 2단계 인증을 μœ„ν•œ μž‘μ—… μƒ˜ν”Œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ³΅μœ ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

@sbertix λŠ” 곧 λͺ…ν™•ν•œ 예λ₯Ό κ²Œμ‹œν•  κ²ƒμž…λ‹ˆλ‹€.
인내심을 가져라.

μ£„μ†‘ν•©λ‹ˆλ‹€. 아직 예제λ₯Ό κ²Œμ‹œν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€. μ œκ°€ 정말 λ°”λΉ΄μŠ΅λ‹ˆλ‹€.
λ‚˜λŠ” λ‚΄κ°€ 곧 ν•˜λ‚˜λ₯Ό κ²Œμ‹œν•  수 있기λ₯Ό λ°”λžλ‹ˆλ‹€.

λ‚˜λŠ” swift에 μ™„μ „νžˆ μ΅μˆ™ν•˜μ§€ μ•Šμ§€λ§Œ 버그λ₯Ό λ°œκ²¬ν–ˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

  • μ—¬κΈ° μ—μ„œ user ( Credentials μΈμŠ€ν„΄μŠ€)의 λ³€κ²½ κ°€λŠ₯ν•œ 볡사본을 λ§Œλ“€κ³  ν•Έλ“€λŸ¬ μ†μ„±μ˜ 값을 μ„€μ •ν•©λ‹ˆλ‹€.
  • κ·ΈλŸ¬λ‚˜ 이 쀄 μ—μ„œλŠ” Credentials 의 μ›λž˜ μΈμŠ€ν„΄μŠ€μ΄λ―€λ‘œ handler 속성 값이 μ„€μ •λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. authentification.code() ν•¨μˆ˜κ°€ ν˜ΈμΆœλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

더 μžμ„Ένžˆ 쑰사할 κΈ°νšŒκ°€ μ—†μ—ˆμ§€λ§Œ 그럴 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. λΆ„λͺ…νžˆ ν˜„μž¬ μ»€λ°‹μ—μ„œ Credentials λŠ” struct 둜 μ„ μ–Έλ˜κ³  class 이 μ•„λ‹ˆλΌ λͺ¨λ“  참쑰에 μ˜ν•œ μ „λ‹¬μ˜ μ „μ œμ˜€μŠ΅λ‹ˆλ‹€.
λΆ„λͺ…νžˆ 둜컬 λ²„μ „μ—μ„œ μˆ˜μ •ν–ˆκ±°λ‚˜ master ν‘Έμ‹œν•œ 일뢀 λ³€κ²½ μ‚¬ν•­μ΄κ±°λ‚˜ 문제 μžμ²΄κ°€ 아닐 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.
#96에 λŒ€ν•œ λͺ¨λ“  것을 κ²€ν† ν•˜λ €κ³  λ…Έλ ₯ν•˜μ§€λ§Œ μ΅œκ·Όμ—λŠ” μ‹œκ°„μ΄ μ—†μ—ˆμŠ΅λ‹ˆλ‹€. 사과.
@λ₯˜μ‚°

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰

κ΄€λ ¨ 문제

effecttwins picture effecttwins  Β·  16μ½”λ©˜νŠΈ

trentona picture trentona  Β·  3μ½”λ©˜νŠΈ

biox86 picture biox86  Β·  12μ½”λ©˜νŠΈ

sbertix picture sbertix  Β·  27μ½”λ©˜νŠΈ

sbertix picture sbertix  Β·  3μ½”λ©˜νŠΈ