Lianja
Lianja
WordPress Authentication with Applications Password Plugin
See more WordPress Examples
Demonstrates basic username/password authentication using the WordPress Applications Password plugin.Chilkat Lianja Downloads
llSuccess = .F.
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
loHttp = createobject("CkHttp")
// Implements the following CURL command:
// curl -X GET --user wp_username:app_password https://www.yoursite.com/wp-json/wp/v2/posts?page=1
// Use the following online tool to generate HTTP code from a CURL command
// Convert a cURL Command to HTTP Source Code
// Use your WordPress login, such as "admin", not the application name.
loHttp.Login = "wp_username"
// Use the application password, such as "Nths RwVH eDJ4 weNZ orMN jabq"
loHttp.Password = "app_password"
loHttp.BasicAuth = .T.
loSbResponseBody = createobject("CkStringBuilder")
llSuccess = loHttp.QuickGetSb("https://www.yoursite.com/wp-json/wp/v2/posts?page=1",loSbResponseBody)
if (llSuccess = .F.) then
? loHttp.LastErrorText
release loHttp
release loSbResponseBody
return
endif
loJarrResp = createobject("CkJsonArray")
loJarrResp.LoadSb(loSbResponseBody)
loJarrResp.EmitCompact = .F.
? "Response Body:"
? loJarrResp.Emit()
lnRespStatusCode = loHttp.LastStatus
? "Response Status Code = " + str(lnRespStatusCode)
if (lnRespStatusCode >= 400) then
? "Response Header:"
? loHttp.LastHeader
? "Failed."
release loHttp
release loSbResponseBody
release loJarrResp
return
endif
// Sample JSON response:
// (Sample code for parsing the JSON response is shown below)
// [
// {
// "id": 1902,
// "date": "2020-11-16T09:54:09",
// "date_gmt": "2020-11-16T16:54:09",
// "guid": {
// "rendered": "http:\/\/cknotes.com\/?p=1902"
// },
// "modified": "2020-11-16T09:54:09",
// "modified_gmt": "2020-11-16T16:54:09",
// "slug": "xero-redirect-uri-for-oauth2-and-desktop-apps",
// "status": "publish",
// "type": "post",
// "link": "https:\/\/cknotes.com\/xero-redirect-uri-for-oauth2-and-desktop-apps\/",
// "title": {
// "rendered": "Xero Redirect URI for OAuth2 and Desktop Apps"
// },
// "content": {
// "rendered": "<p>...",
// "protected": false
// },
// "excerpt": {
// "rendered": "<p>...",
// "protected": false
// },
// "author": 1,
// "featured_media": 0,
// "comment_status": "closed",
// "ping_status": "open",
// "sticky": false,
// "template": "",
// "format": "standard",
// "meta": [
// ],
// "categories": [
// 815
// ],
// "tags": [
// 594,
// 816
// ],
// "_links": {
// "self": [
// {
// "href": "https:\/\/cknotes.com\/wp-json\/wp\/v2\/posts\/1902"
// }
// ],
// "collection": [
// {
// "href": "https:\/\/cknotes.com\/wp-json\/wp\/v2\/posts"
// }
// ],
// "about": [
// {
// "href": "https:\/\/cknotes.com\/wp-json\/wp\/v2\/types\/post"
// }
// ],
// "author": [
// {
// "embeddable": true,
// "href": "https:\/\/cknotes.com\/wp-json\/wp\/v2\/users\/1"
// }
// ],
// "replies": [
// {
// "embeddable": true,
// "href": "https:\/\/cknotes.com\/wp-json\/wp\/v2\/comments?post=1902"
// }
// ],
// "version-history": [
// {
// "count": 1,
// "href": "https:\/\/cknotes.com\/wp-json\/wp\/v2\/posts\/1902\/revisions"
// }
// ],
// "predecessor-version": [
// {
// "id": 1904,
// "href": "https:\/\/cknotes.com\/wp-json\/wp\/v2\/posts\/1902\/revisions\/1904"
// }
// ],
// "wp:attachment": [
// {
// "href": "https:\/\/cknotes.com\/wp-json\/wp\/v2\/media?parent=1902"
// }
// ],
// "wp:term": [
// {
// "taxonomy": "category",
// "embeddable": true,
// "href": "https:\/\/cknotes.com\/wp-json\/wp\/v2\/categories?post=1902"
// },
// {
// "taxonomy": "post_tag",
// "embeddable": true,
// "href": "https:\/\/cknotes.com\/wp-json\/wp\/v2\/tags?post=1902"
// }
// ],
// "curies": [
// {
// "name": "wp",
// "href": "https:\/\/api.w.org\/{rel}",
// "templated": true
// }
// ]
// }
// },
// ...
// ]
// Sample code for parsing the JSON response...
// Use the following online tool to generate parsing code from sample JSON:
// Generate Parsing Code from JSON
loDate_gmt = createobject("CkDtObj")
i = 0
lnCount_i = loJarrResp.Size
do while i < lnCount_i
loJson = loJarrResp.ObjectAt(i)
lnId = loJson.IntOf("id")
lcDate = loJson.StringOf("date")
loJson.DtOf("date_gmt",.F.,loDate_gmt)
lcGuidRendered = loJson.StringOf("guid.rendered")
lcModified = loJson.StringOf("modified")
lcModified_gmt = loJson.StringOf("modified_gmt")
lcSlug = loJson.StringOf("slug")
lcStatus = loJson.StringOf("status")
lcV_type = loJson.StringOf("type")
lcLink = loJson.StringOf("link")
lcTitleRendered = loJson.StringOf("title.rendered")
lcContentRendered = loJson.StringOf("content.rendered")
llContentProtected = loJson.BoolOf("content.protected")
lcExcerptRendered = loJson.StringOf("excerpt.rendered")
llExcerptProtected = loJson.BoolOf("excerpt.protected")
lnAuthor = loJson.IntOf("author")
lnFeatured_media = loJson.IntOf("featured_media")
lcComment_status = loJson.StringOf("comment_status")
lcPing_status = loJson.StringOf("ping_status")
llSticky = loJson.BoolOf("sticky")
lcTemplate = loJson.StringOf("template")
lcFormat = loJson.StringOf("format")
j = 0
lnCount_j = loJson.SizeOfArray("meta")
do while j < lnCount_j
loJson.J = j
j = j + 1
enddo
j = 0
lnCount_j = loJson.SizeOfArray("categories")
do while j < lnCount_j
loJson.J = j
lnIntVal = loJson.IntOf("categories[j]")
j = j + 1
enddo
j = 0
lnCount_j = loJson.SizeOfArray("tags")
do while j < lnCount_j
loJson.J = j
lnIntVal = loJson.IntOf("tags[j]")
j = j + 1
enddo
j = 0
lnCount_j = loJson.SizeOfArray("_links.self")
do while j < lnCount_j
loJson.J = j
lcHref = loJson.StringOf("_links.self[j].href")
j = j + 1
enddo
j = 0
lnCount_j = loJson.SizeOfArray("_links.collection")
do while j < lnCount_j
loJson.J = j
lcHref = loJson.StringOf("_links.collection[j].href")
j = j + 1
enddo
j = 0
lnCount_j = loJson.SizeOfArray("_links.about")
do while j < lnCount_j
loJson.J = j
lcHref = loJson.StringOf("_links.about[j].href")
j = j + 1
enddo
j = 0
lnCount_j = loJson.SizeOfArray("_links.author")
do while j < lnCount_j
loJson.J = j
llEmbeddable = loJson.BoolOf("_links.author[j].embeddable")
lcHref = loJson.StringOf("_links.author[j].href")
j = j + 1
enddo
j = 0
lnCount_j = loJson.SizeOfArray("_links.replies")
do while j < lnCount_j
loJson.J = j
llEmbeddable = loJson.BoolOf("_links.replies[j].embeddable")
lcHref = loJson.StringOf("_links.replies[j].href")
j = j + 1
enddo
j = 0
lnCount_j = loJson.SizeOfArray("_links.version-history")
do while j < lnCount_j
loJson.J = j
lnCount = loJson.IntOf("_links.version-history[j].count")
lcHref = loJson.StringOf("_links.version-history[j].href")
j = j + 1
enddo
j = 0
lnCount_j = loJson.SizeOfArray("_links.predecessor-version")
do while j < lnCount_j
loJson.J = j
lnId = loJson.IntOf("_links.predecessor-version[j].id")
lcHref = loJson.StringOf("_links.predecessor-version[j].href")
j = j + 1
enddo
j = 0
lnCount_j = loJson.SizeOfArray("_links.wp:attachment")
do while j < lnCount_j
loJson.J = j
lcHref = loJson.StringOf("_links.wp:attachment[j].href")
j = j + 1
enddo
j = 0
lnCount_j = loJson.SizeOfArray("_links.wp:term")
do while j < lnCount_j
loJson.J = j
lcTaxonomy = loJson.StringOf("_links.wp:term[j].taxonomy")
llEmbeddable = loJson.BoolOf("_links.wp:term[j].embeddable")
lcHref = loJson.StringOf("_links.wp:term[j].href")
j = j + 1
enddo
j = 0
lnCount_j = loJson.SizeOfArray("_links.curies")
do while j < lnCount_j
loJson.J = j
lcName = loJson.StringOf("_links.curies[j].name")
lcHref = loJson.StringOf("_links.curies[j].href")
llTemplated = loJson.BoolOf("_links.curies[j].templated")
j = j + 1
enddo
release loJson
i = i + 1
enddo
release loHttp
release loSbResponseBody
release loJarrResp
release loDate_gmt