Je tente de créer une expérience de connexion unique entre un site asp.net et un site wordpress en utilisant une simple méthode POST de formulaire. J'ai construit une simple page php qui utilise les fonctions wordpress natives wp_insert_user et wp_signon pour créer un compte utilisateur dans mysql db et les signer. Dans mon code de page asp.net 'create new user', j'utilise la méthode post d'un HttpWebRequest pour envoyer les informations requises à la page php.ASP.NET à Wordpress SSO avec HttpWebRequest
Cela fonctionne presque! Le nouvel utilisateur wordpress est créé dans la base de données mysql, mais ils ne sont pas connectés. Comment puis-je obtenir wordpress pour les enregistrer?
MISE À JOUR 29/11/11. J'ai ajouté le code que j'ai utilisé pour que cela fonctionne. Voir ci-dessous
Voici mon HttpWebRequest
Public Sub LoginToWordpress()
'This enables single sign on between our asp.net site and wordpress.
Try
'get the values
Dim uid As String = TxtLogin.Text
Dim pwd As String = TxtPassword.Text
'format and encode the input data
Dim encoding As New ASCIIEncoding()
Dim postData As String = ("&UserName=" & uid)
postData += ("&Pwd=" & pwd)
Dim data As Byte() = encoding.GetBytes(postData)
Dim cc As New CookieContainer()
'Prepare web request...
Dim myRequest As HttpWebRequest = WebRequest.Create("http://www.mywebsite.com/speciallogin.php")
myRequest.Method = WebRequestMethods.Http.Get
myRequest.Method = "POST"
myRequest.ContentType = "application/x-www-form-urlencoded"
myRequest.ContentLength = data.Length
myRequest.CookieContainer = cc
Dim newStream As Stream = myRequest.GetRequestStream()
'submit the php form for BuddyPress signup
newStream.Write(data, 0, data.Length)
newStream.Close()
'Get the response
Dim myResponse As HttpWebResponse = myRequest.GetResponse()
Dim reader As New StreamReader(myResponse.GetResponseStream())
'Look for cookies in the response
If Not myResponse.Cookies.Count = 0 Then
For Each c As Cookie In myResponse.Cookies
'Write the wordpress cookie to the browser
Dim cookiename As String = c.Name
Dim cCookie As New HttpCookie(cookiename)
cCookie.Value = c.Value
cCookie.Expires = c.Expires
cCookie.Domain = ".mywebsite.com"
cCookie.Path = "/"
Response.Cookies.Add(cCookie)
Next
End If
myResponse.Close()
Catch ex As Exception
Response.Write(ex)
End Try
End Sub
Voici la page PHP (speciallogin.php)
<?PHP
include 'wp-load.php';
require_once(ABSPATH . WPINC . '/user.php');
require_once(ABSPATH . WPINC . '/pluggable.php');
//get the variables from the post of another page
$u_username = $_POST['UserName'];
$u_password = $_POST['Pwd'];
//build the array
$creds = array();
$creds['user_login'] = $u_username;
$creds['user_password'] = $u_password;
$creds['remember'] = true;
//log the user in
$user = wp_signon($creds, false);
if (is_wp_error($user))
echo $user->get_error_message();
//see what happened
if (is_user_logged_in()) {
echo'log in failed'.'<br>';
} else {
echo'login success!"<br>';
}
wp_get_cookie_login() ;
print_r($_COOKIE);
?>
s'il vous plaît partager avec le monde si vous parvenez à obtenir ce travail :) – devrooms
N o s'inquiète. Si je le fais fonctionner, je vais bloguer, tweeter, et le crier d'une montagne – Mtblewis