Swiftyinsta: اسأل عن بيانات الاعتماد

تم إنشاؤها على ٩ أكتوبر ٢٠١٩  ·  19تعليقات  ·  مصدر: TheM4hd1/SwiftyInsta

سلام،
أرجوك قل لي. لدي مشكلة.

عند طلب تسجيل الدخول إلى func ، أتلقى رسالة نصية قصيرة تحتوي على الرمز ، الذي قمت بتسجيله في بيانات الاعتماد.
لا يمكنني إعادة إرسال هذا الرمز. كيف افعلها؟ ما الخطأ الذي افعله؟

هذا هو الكود الخاص بي

فئة 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 كومينتر

تحتاج إلى نقل credentials.code = "121332" بعد إرجاع معالج المصادقة .failure(let error) .
قد يكون القيام بذلك غير متزامن داخل if error.requiresInstagramCode { } خيارًا جيدًا.

لا تزال المشكلة قائمة
https://prnt.sc/pgyf15
على ما يبدو لا يرسل هذا الرمز

حاول بدون نقطة التوقف. لأنك بهذه الطريقة تقوم بالفعل بإيقاف الشفرة عند وصولها إلى هذا الصف ، لذلك لا يمكنها نشر أي طلب على أنه تغيير credentials.code . :احمر خدود:
إذا لم يغير أي شيء ، فحاول الاحتفاظ بـ credentials أيضًا (على الرغم من أنه لا ينبغي أن يكون مشكلة مما يمكنني رؤيته من المقتطف الخاص بك ، tbh).

https://prnt.sc/pgynah
لا تزال المشكلة قائمة. أود أن ألفت انتباهكم ، فأنا أنقل بيانات الاعتماد إلى .user ، لأنه إذا كان هناك أوراق اعتماد (كما في المثال) ، فسيحدث خطأ

.user الطريقة الصحيحة.
.credentials في development ونسيت تغييره. شكرا للإشارة. سوف أغيره الآن.
ما زلت لا أحصل على الخطأ رغم أنني أختبره بطريقتي وكل شيء يعمل على النحو المنشود 🤔

نظرًا لأنه لا يمكنني رؤيته في آخر لقطة شاشة لك ، فهل لا يعمل حقًا مع استمرار credentials بهذه الطريقة ، ثم تحديث code بعد إرجاعه Error يتطلبه ؟
لأن هذا يبدو أنه الشيء الوحيد الذي تفعله بشكل مختلف ، tbh 😞

إذا كانت لدينا بيانات الاعتماد ، فلدي هذا الخطأ https://prnt.sc/pgyvlx
لقد قمت بنشر كل الكود الخاص بي في الرسالة الرئيسية.
أفعل شيئا خاطئا؟

كيف تختبر إعادة إرسال الرسالة؟

.user هو الخيار الصحيح ، .credentials تم الاحتفاظ به في الوثائق عن طريق الخطأ.
انقل إقرارك credentials أقل من handler واحد. كممتلكات "محتفظ بها".
يجب أن تعمل بعد ذلك.

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

func login() {
  …
}

كل الكود ، هناك خطأ على أي حال (

استيراد UIKit
استيراد SwiftyInsta

فئة ViewController: UIViewController {
اسمحوا المعالج = APIHandler ()
var الاعتماد = بيانات الاعتماد (اسم المستخدم: "اسم المستخدم" ، كلمة المرور: "كلمة المرور" ، تحقق من خلال: .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)")
        }
    }
}

}

وما هو الخطأ هذه المرة؟ تضمين التغريدة

2019-10-09 17: 32: 25.333892 + 0300 TestInsta [9747: 281440] [] nw_connection_receive_internal_block_invoke [C1] تلقي الرد فشل مع الخطأ "تم إلغاء العملية"

https://prnt.sc/pgzldk

يبدو هذا في الواقع وكأنه نوع من تحذير _Xcode_ ، وليس شيئًا تم إنشاؤه SwiftyInsta

لدي مشكلة مماثلة. ليس من الواضح كيفية الدخول في كتلة الفشل لتعيين رمز التفويض من الرسائل القصيرة. هل يمكنك المساعدة بمثال؟

مرحبا لدي نفس المشكلة أيضا. هل يمكنك مشاركة تطبيق نموذج عملي للمصادقة الثنائية؟

sbertix سينشر مثالا واضحا قريبا.
كن صبورا.

عذرًا ، لم أتمكن من نشر مثال حتى الآن ، لقد كنت مشغولًا حقًا.
آمل أن أتمكن من نشر واحدة قريبا.

أنا جديد تمامًا في التعامل السريع ولكن ربما وجدت الخطأ:

  • هنا ، تقوم بإنشاء نسخة قابلة للتغيير من user (مثيل Credentials ) وتعيين قيمة خاصية المعالج.
  • ولكن في هذا السطر ، يمثل المثيل الأصلي Credentials ، لذلك لم يتم تعيين handler الخاصية authentification.code() .

لم تتح لي الفرصة لإجراء مزيد من التحقيق في الأمر ولكن قد يكون كذلك. على ما يبدو ، في الالتزام الحالي ، تم الإعلان عن Credentials على أنه struct وليس class ، والذي كان أساس كل شيء عابر بالمرجعية.
يبدو أنه شيء قمت بإصلاحه على طول الطريق في الإصدار المحلي الخاص بي ، أو بعض التغييرات التي دفعتها إلى master على طول الطريق ، أو ربما لا حتى المشكلة في حد ذاتها.
سأحاول مراجعة كل شيء لـ # 96 ، لكن لم يكن لدي أي وقت مؤخرًا. اعتذارات.
تضمين التغريدة

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

sbertix picture sbertix  ·  27تعليقات

sbertix picture sbertix  ·  8تعليقات

anonrig picture anonrig  ·  3تعليقات

reefer picture reefer  ·  18تعليقات

canaksoy picture canaksoy  ·  6تعليقات