こんにちは、
教えてください。 私は問題があります。
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)")
}
}
}
}
認証ハンドラーが.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()
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]エラー「操作がキャンセルされました」で応答の受信に失敗しました
これは実際には、 SwiftyInsta
生成されたものではなく、ある種の_Xcode_警告のように見えます🤔
私も同様の問題を抱えています。 SMSから認証コードを設定するために失敗ブロックに入る方法は明確ではありません。 例を手伝ってもらえますか?
こんにちは私も同じ問題を抱えています。 二要素認証の実用的なサンプルアプリケーションを共有できますか?
@sbertixはすぐに明確な例を投稿します。
我慢して。
申し訳ありませんが、まだ例を投稿できていません。とても忙しいです。
すぐに投稿できるといいのですが。
私はそれをさらに調査する機会がありませんでしたが、そうかもしれません。 どうやら現在のコミットでは、 Credentials
はclass
ではなくstruct
として宣言されています。これは、すべての参照渡しの前提でした。
これは、ローカルバージョンで途中で修正したか、途中でmaster
にプッシュした変更であるか、問題自体ではない可能性があります。
#96のすべてを見直してみますが、最近は時間がありません。 謝罪。
@リュウサン
最も参考になるコメント
申し訳ありませんが、まだ例を投稿できていません。とても忙しいです。
すぐに投稿できるといいのですが。