Swiftyinsta: クレデンシャルについて尋ねる.code

作成日 2019年10月09日  ·  19コメント  ·  ソース: TheM4hd1/SwiftyInsta

こんにちは、
教えてください。 私は問題があります。

func loginでリクエストすると、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が正しい方法です。
.credentialsdevelopment使用されていたので、変更するのを忘れました。 ご指摘ありがとうございます。 今すぐ変更します。
私はそれを自分の方法でテストしていて、すべてが意図したとおりに機能しているので、まだエラーは発生しません🤔

あなたの最後のスクリーンショットではそれを見ることができないので、 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()
varcredentials = Credentials(username: "username"、password: "password"、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から認証コードを設定するために失敗ブロックに入る方法は明確ではありません。 例を手伝ってもらえますか?

こんにちは私も同じ問題を抱えています。 二要素認証の実用的なサンプルアプリケーションを共有できますか?

@sbertixはすぐに明確な例を投稿します。
我慢して。

申し訳ありませんが、まだ例を投稿できていません。とても忙しいです。
すぐに投稿できるといいのですが。

私はswiftにまったく慣れていませんが、バグを見つけた可能性があります。

  • ここでは、 userCredentialsインスタンス)の可変コピーを作成し、ハンドラープロパティの値を設定します。
  • ただし、この行では、これはCredentialsの元のインスタンスであるため、 handlerプロパティの値は設定されていません。 authentification.code()関数は呼び出されません。

私はそれをさらに調査する機会がありませんでしたが、そうかもしれません。 どうやら現在のコミットでは、 Credentialsclassではなくstructとして宣言されています。これは、すべての参照渡しの前提でした。
これは、ローカルバージョンで途中で修正したか、途中でmasterにプッシュした変更であるか、問題自体ではない可能性があります。
#96のすべてを見直してみますが、最近は時間がありません。 謝罪。
@リュウサン

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

sbertix picture sbertix  ·  8コメント

trentona picture trentona  ·  3コメント

anonrig picture anonrig  ·  3コメント

sbertix picture sbertix  ·  27コメント

canaksoy picture canaksoy  ·  6コメント