Попытка использовать аутентификацию JWT для WP REST API с помощью WordPressPCL API.
Удалось аутентифицировать и публиковать как публикации, так и страницы на сервере WordPress с помощью WordPressPCL. Чтобы ограничить доступ только для платящих участников, я планировал использовать MemberPress. Я создал специальную категорию для поста и опубликовал их как таковые. Я настроил правило в MemberPress, чтобы предоставить доступ только подписчикам.
Протестировал доступ к сообщениям и могу видеть содержимое из моего браузера, и все в порядке с этим.
Проблемав том, что когда я пытаюсь сделать то же самое с помощью WordPressPCL, хотя я правильно авторизован с точки зрения JWT / WordPress, у меня нет доступа к контенту. Похоже, что MemberPress блокирует авторизованного пользователя, заходящего через WordPressPCL, но разрешает доступ при заходе через веб-браузер.
То же самое происходит, когда я пытаюсь опубликовать страниц вместо сообщений. Я должен также упомянуть, что я могу загружать все метаданные сообщений, но не содержимое каждого сообщения, которое приводит меня к «Вы не авторизованы для просмотра этой страницы».
Приведенный ниже код извлекает все сообщения с определенным заголовком и определеннымкатегория но myPosts.Content.Rendered == "Вы не авторизованы для просмотра этой страницы" для всех сообщений.
try
{
WordPressClient client = await GetClient(clientURL,userName,password);
if (await client.IsValidJWToken())
{
var posts = await client.Posts.GetAll();
var myPosts = posts.Where(p => p.Categories[0] == category && p.Title.Rendered == title);
}
...
Я пробовал подобноевещь без JWT. Я могу аутентифицироваться, но не могу получить содержимое страницы:
CookieContainer cc = new CookieContainer();
var request = (HttpWebRequest)WebRequest.Create(loginUri);
request.Proxy = null;
request.AllowAutoRedirect = false;
request.CookieContainer = cc;
request.Method = "post";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = requestData.Length;
using (Stream s = request.GetRequestStream())
s.Write(requestData, 0, requestData.Length);
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
foreach (Cookie c in response.Cookies)
Console.WriteLine(c.Name + " = " + c.Value);
}
string newloginUri = "http://localhost/myWP/myPostforToday/";
HttpWebRequest newrequest = (HttpWebRequest)WebRequest.Create(newloginUri);
newrequest.Proxy = null;
newrequest.CookieContainer = cc;
using (HttpWebResponse newresponse = (HttpWebResponse)newrequest.GetResponse())
using (Stream resSteam = newresponse.GetResponseStream())
using (StreamReader sr = new StreamReader(resSteam))
File.WriteAllText(@"retrievedpage.html", sr.ReadToEnd());
Я подозреваю, что правила MemeberPress ограничивают доступ, но я не смог найти никакого решения. Некоторые рекомендации о том, как справиться с этим (с участием или без участия MemberPress), будут очень признательны.