باستخدام Omniauth، كيف يمكنني رؤية مستودعات المستخدم الذي قام بتسجيل الدخول باستخدام Github؟

StackOverflow https://stackoverflow.com//questions/24004142

سؤال

لقد قمت بإعداد Omniauth على تطبيق Rails 4 الخاص بي للسماح للمستخدم بتسجيل الدخول باستخدام Github.

هذا الجزء يعمل بشكل جيد.

الآن، أود أن أدرج مستودعات هذا المستخدم (أطلب النطاق repo عندما يطلب من المستخدم ترخيص تطبيقي.

لقد قمت بالكثير من البحث على Google، لكني لا أفهم كيفية القيام بذلك.

هل يمكن لأي أحد أن يخبرني كيف يمكنني استخدام المصادقة الحالية لإدراج مستودعات المستخدم الخاص بي؟

هل كانت مفيدة؟

المحلول

حسنًا، OmniAuth هي مجرد مكتبة مصادقة مرنة.والغرض الوحيد منه هو مصادقة المستخدمين.أي سلوك مخصص تريده يجب أن يتم تنفيذه بواسطتك أو بواسطة جوهرة أخرى.

يمكنك تحقيق ما تريد بمجرد استخدام واجهة برمجة تطبيقات GitHub الموثقة جيدًا:

# callbacks_controller.rb
require "open-uri"
require "json"

omniauth = env['omniauth.auth']
repositories_json = open(omniauth.extra.raw_info.repos_url,
  "Accept" => "application/vnd.github.v3+json",
  "Authorization" => "token #{omniauth.credentials.token}"
).read
repositories = JSON.parse(repositories_json)

إذا كان هذا هو كل ما تحتاجه، فاستخدمه بكل الوسائل.إذا كان لديك متطلبات أخرى إلى جانب هذا، فربما ينبغي عليك إلقاء نظرة على جوهرة جيثب.

أيضًا، يجب عليك استخدام النطاق فقط repo إذا كنت ترغب في الوصول إلى المستودعات الخاصة لمستخدميك.ويعد طلب الوصول إلى مستودعات التخزين الخاصة بالمستخدم أمرًا تطفليًا بعض الشيء، لذا لا تفعل ذلك باستخفاف.

إذا كنت تريد حقًا الوصول إلى المستودعات الخاصة للمستخدم، فيجب عليك إلحاقها ?type=all إلى نهاية repos_url.لذلك عليك أن تفعل شيئًا مثل:

open("#{omniauth.extra.raw_info.repos_url}?type=all" ... )
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top