باستخدام فئة SharePoint 2013 TokenHelper عندما لا يوجد httpcontext.current

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/62205

سؤال

sharePoint 2013 تطبيقات Visual Studio تحتوي على فئة TokenHelper التي تبسط استخدام OAuth للاتصال بعملية SharePoint 2013. أنا أستخدم هذه الفئة للاتصال عن بعد مع SharePoint 2013 (في Office 365).

يمكنني استخدام TokenHelper.GetClientContextWithoothode طريقة للحصول على ClientContext مع رمز تفويض Oauth عند التشغيل في تطبيق ويب يحتوي على HttpContext.current. ومع ذلك، إذا كنت تستخدم هذا الرمز نفسه في تطبيق وحدة التحكم أو سياق آخر حيث لا يوجد httpcontext.current، فإن خادم SharePoint 2013 البعيد (400) طلب سيء.

لقد ضاقت المشكلة لأسفل إلى طريقة Microsoft.identityModel.s2s.oauth2.oauth2s2sclient.issue (). عندما يكون هناك httpcontext، فإنه يعمل، ولكن بدونه يحصل على خطأ طلب سيء (400).

لقد حاولت استخدام إطار موك لتزوير httpcontext، ولكن هذا لا يعمل أيضا.

يحدث الفشل في طريقة Tokenhelper.getaccessToken هنا: giveacodicetagpre.

أي أفكار؟

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

المحلول

كنت قادرا أخيرا لمعرفة ما كنت أفعله خطأ:

1) يتم إرجاع رمز التفويض عند إنشاء اتصال OAuth جيد فقط لدورة المتصفح هذه.وبالتالي، لماذا لم أستطع إعادة استخدام رمز التفويض في وقت لاحق من خدمات النهاية الخلفية أو في جلسات متصفح جديدة.

2) في صفحة إعادة التوجيه، استخدمت رمز التفويض الذي تم إرجاعه لإنشاء رمز وصول جديد.من Token Access، يمكنني استرداد رمز التحديث.

3) رمز التحديث هو ما يمكنني تخزينه وإعادة استخدامه لاحقا لإنشاء سياقات عميل من رمز النهاية الخلفي أو جلسات متصفح جديدة.

لذلك، باختصار، لإعادة استخدام الرمز المميز OAuth، يجب عليك استخدام رمز التحديث، وليس رمز التفويض.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى sharepoint.stackexchange
scroll top