I am using wp-api-v2 and Basic Auth plugin to add post to my wordpress. it work nice in my local wamp server but wen i upload my code on online server my credential not working and prevent me to aading new post by this error:
"Sorry, you are not allowed to create new posts."
I add my credential by putting this key/value pair to my request header:
key=>"Authorization",
value=>"Basic ".base64_encode($username.":".$password)
is there any Possibility for misconfiguration or problem in my server?
I finally found solution in this link and resolve my problem.
Related
I'm currently trying to wrap my head around Wordpress and its relation to the REST API. All of theses issues are only occurring in the context of plugin development. So far I had setup my endpoint and written my callback which will be executed whenever someone is sending a GET-Request to said endpoint. However, my callback is never called. This is the file which I've written so far.
/*
* Plugin Name: cola-learning
*/
if(!defined('ABSPATH')){
die;
}
if(!function_exists('add_action')){
echo 'You cant access this ressource!';
exit;
}
function PrintRESTResponse()
{
return rest_ensure_response("student");
}
function SetupREST()
{
return register_rest_route("student/v1","/view/",[
'methods' => 'GET',
'callback' => 'PrintRESTResponse'
],false);
}
add_action('rest_api_init','SetupREST');
Perhaps it might also help, if I'll give some background information about my development machine:
- OS: Windows 10
- Server: Apache Web Server (included inside XAMPP)
- Wordpress Version: 5.3.2
- PHP Version: 7.4
- Development IDE: Eclipse 2019-12 CDT ( with PHP Plugin )
From my research, everything should work fine. However, it doesnt :/ Did I miss something crucial?
Update:
WordPress REST API Routing
WordPress is having a default route for all request which are directed to the REST API ( at least if you use XAMPP with the Bitnami WordPress application module). Now, if one wants to send a request to said REST API, the person needs to use an URL with the form of ip:port/wp-json/rest_route. ip ressembles the ip address of the server which is hosting wordpress. port is the port of said server. wp-json, however, is the portion which differs an ordinary request from a request to the REST API. Everything after this portion (rest_route) is the rest route which I've defined in the above source code.
What went wrong?
My request was pointed to the wrong endpoint. Therefore I used the URL 'localhost:wpPort/wordpress/student/v1/view/'. However, the 'wp-json/' portion is missing. Therefore WordPress will search for a page that doesn't exist in the first place. Instead I should have used the URL 'localhost:wpPort/wordpress/wp-json/student/v1/view/'.
After some troubleshooting it turns out the URL being used to test was missing a part of the endpoint path.
Here is the correct path to test the newly registered endpoint.
localhost:80/wordpress/wp-json/student/v1/view/
Here's some more reading on WP Rest API endpoints:
https://developer.wordpress.org/rest-api/extending-the-rest-api/routes-and-endpoints/
When trying to login with a Facebook app, I'm getting the following error:
Can't Load URL: The domain of this URL isn't included in the app's domains. To be able to load this URL, add all domains and subdomains of your app to the App Domains field in your app settings.
As you can see on the following image:
URL: http://www.facebook-php-test.com
Below is the configuration I have set on my Facebook App.
(Notice: for privacy purposes I changed the values for App ID and App Secret on the image)
The code for this basic sample application is on this GitHub repository:
https://github.com/zeuscronos/facebook-php-test.com
I really don't know why it says that the domain of this URL isn't included in the app's domains when it is actually there.
On the field: App Domains I tried with both domains at the same time:
facebook-php-test.com
www.facebook-php-test.com
but no success.
The generated login URL is as follows:
https://www.facebook.com/v2.10/dialog/oauth?client_id=012345678901234&state=d3758e484d539bebd6505427aaf1fa3b&response_type=code&sdk=php-sdk-5.6.1&redirect_uri=http%3A%2F%2Fwww.facebook-php-test.com%2Ffb-callback.php&scope=email%2Cuser_friends%2Cuser_photos
I configured the domain: facebook-php-test.com as a virtual host on an Apache server.
I have to say that I have worked a lot with the Facebook PHP SDK and this is the first time I'm getting struggle with this. Actually, I got this problem with another big application I was working with then after couple of hours trying to solve the problem I created this dummy application to try to figure out what's the cause of the problem.
I have tried many things with no success.
Any idea on how to solve this?
Thanks.
EDIT 01
Following the suggestion of Mr.Geeker comment I did the following...
Added the product: Facebook Login and configured like below:
Then, finally I could go forward, and I was asked for permissions:
But unfortunately, after granting permissions, I got the following:
Any idea on how to continue from this point?
EDIT 02 - SOLUTION
I ended disabling the option: Use Strict Mode for Redirect URIs under Client OAuth Settings. They say it is strongly recommended has this feature On but I could not get this working with that On.
By the way I also disabled: Client OAuth Login since my app doesn't use it.
Finally, the only feature I have enable under: Client OAuth Settings is: Web OAuth Login.
Facebook now roles some features as plugins. In the left hand side select Products and add product. Then select Facbook Login. Pretty straight forward from there, you'll see all the Oauth options show up.
As originally answered here
On March 2018, facebook updated the API and forced all apps to keep strict mode On.
To make it work, you have to include the full callback url in the Valid OAuth Redirect URIs field. If you redirect to "https://www.example.com/facebook/callback", the full URI must be included (without parameters):
The domain must be set in the App domains and the Website Site URL fields on the basic settings page:
If none of these works and the "Can't Load URL: The domain of this URL isn't included in the app's domains." message keeps showing, check if you have the latest version of the SDK. I could make it work after updating de PHP SDK from version 5.5 to 5.6.2
I'm using PHP 5.5 and I found the bug.
The PHP Facebook API VERSION = '5.5.0', DEFAULT_GRAPH_VERSION = 'v2.9' was adding the URI ?code=XXX in my callback page like this:
mydomainExample.com/callbackFacebook.php ?code=XXXXXXX
and I changed the source code to remove the string after '?'. Now the callback url is only
mydomainExample.com/callbackFacebook.php
The fixed can be done in the file Facebook/Helpers/ FacebookRedirectLoginHelper.php inside the getAccessToken function. I added a 'if' as below in the line 226 and the issue gone:
$redirectUrl = $redirectUrl ?: $this->urlDetectionHandler->getCurrentUrl();
//the next 3 lines was added to avoid the bug (fixed)
if(strripos($redirectUrl, "?")){
$redirectUrl = substr($redirectUrl, 0, strripos($redirectUrl, "?"));
}
// At minimum we need to remove the state param
$redirectUrl = FacebookUrlManipulator::removeParamsFromUrl($redirectUrl, ['state']);
I working on third party social login facebook by using django-social-authpackage. But when try to login bellow error show .
I also use django-allauth package and for that i use answerme facebook app.But same problem shown there also.
Facebook server will never find your local server because your website is not live and if you are running localserver then that means that is available to you only and the other person or Machine will not be able to access your server which local. so, to provide your url as callback url you will have to host your local server somewhere globally so, that Facebook can go through that and give results in response to that.
In Settings -> basic set http://localhost:8000/
In Django settings set:
SOCIAL_AUTH_FACEBOOK_KEY = your key
SOCIAL_AUTH_FACEBOOK_SECRET = your secret key
Also in case of success or fail you can redirect the user using this settings.
For finish SOCIAL_AUTH_LOGIN_REDIRECT_URL
For fail SOCIAL_AUTH_LOGIN_URL
I am trying to get the files and folders from dropbox based on the user permission.I am developing the API for that.
In the dropbox apps i have created the application.And i got the App key,App secret.And also i given the redirect url as my localhost file path for OAuth2.
PHP:
$webAuth = new Dropbox\WebAuth($appInfo,$appName,'http://localhost/dropboxapi/
dropbox_finish.php',$csrfTokenStore);
$authUrl = $webAuth->start();
And i got the authentication url. When i execute the url i got this.
when i hit the allow that should redirect to what i have mentioned(localhost/dropboxapi/
dropbox_finish.php) in the dropbox application.This redirection is not happening and i got the error(in heading) like that.Please help where to check and how to solve.
error:
I solved the problem.Actually in the redirection file which is mentioned in the dropbox application,i have added header to locate index.This was the problem.
Actually redirection successfully happened because of the header it loops again.I removed the header in the localhost/dropboxapi/ dropbox_finish.php
UPDATE:
list($accessToken,$userId) = $webAuth->finish($_GET);
$_session['accessToken']=$accessToken;
//Header('Location: index.php');
I'm currently developing a plugin for wordpress that uses recurly for subscription. I already uploaded it to our site and resume coding there. I'm already done with the checkout page and was in the middle of developing the accounts page when I run into an error:
Fatal error: Uncaught exception 'Recurly_ConnectionError' with message 'Failed to connect to Recurly (Could not resolve host: xx-my-subdomain-xx.recurly.com)
xx-my-subdomain-xx is the placeholder for the subdomain
I already increased the connection timeout to 30 but my effort was futile. I tried testing it in my localhost and found out that it was working. I think i has something to do with the cURL but I can't point out what's causing the problem.
Any help would be appreciated.
Recurly_Client::$subdomain = 'your-subdomain-name'; // i.e devapp,myapp..etc
You don't need to write whole subdomain URL you just need to pass your subdomain name which is found in configuration -> site setting (Only the name of the subdomain).
I hope this will solve your issue as I also got the same error after this change its working fine for me.
Provide your subdomain as follows
Recurly_Client::$subdomain = "Your RECURLY_SUBDOMAIN";
Then add your API key and certificate path as follows
Recurly_Client::$apiKey = "Your RECURLY_API_KEY";
Recurly_Client::$CACertPath = "Your RECURLY_OPENSSL_CertificatePATH";
I hope this will work for you.