it-swarm.com.de

Wordpress Social Login> Auf der Facebook-Pinnwand eines Benutzers posten

Ich versuche, auf der Pinnwand/Timeline eines aktuell angemeldeten Facebook-Benutzers etwas zu posten.

Ich habe dies in der Github-Dokumentation des Plugins gefunden: http://miled.github.io/wordpress-social-login/developer-api-apis.html

Ich habe den zweiten Codeausschnitt (den Facebook-Code) in meine functions.php-Datei eingefügt.

Dann habe ich in einer meiner WordPress-Vorlagendateien Folgendes getan:

apply_filters('wsl_hook_process_login_before_wp_set_auth_cookie', get_current_user_id(), "Facebook", ???);

Die Sache ist, ich habe keine Ahnung, was ich anstelle von $ hybridauth_user_profile setzen muss

Wenn ich diese Variable var_dump:

global $hybridauth_user_profile;
echo "HELLO WORLD: ";
var_dump($hybridauth_user_profile);

Es wird in meiner Vorlagendatei als NULL zurückgegeben (im Ordner wp-content/themes/mytheme).

Ich habe auch versucht, nur das Zugriffstoken abzurufen, damit ich die Facebook-API direkt aus diesem Dokument verwenden kann: http: //miled.github .io/wordpress-social-login/developer-api-snippets.html

Leider das gleiche Problem, keine Ahnung, woher diese Variable $ hybridauth_user_profile stammt.

1
TensGardo

Ich bin kein Experte auf diesem Gebiet, aber hier geht:

Nachdem Sie Code gelesen und eine globale Suche des Filters durchgeführt haben, ist dieser überhaupt kein Filter. Das einzige Mal, dass der Filter aufgerufen wird, befindet sich in einer do_action

    // HOOKABLE: This action runs just before logging the user in (before creating a WP cookie)
    do_action( "wsl_hook_process_login_before_wp_set_auth_cookie", $user_id, $provider, $hybridauth_user_profile );

    // DEPRECIATED: as of 2.2.3
    // do_action( 'wsl_hook_process_login_before_set_auth_cookie', $user_id, $provider, $hybridauth_user_profile );

In diesem Fall würden Sie die folgenden Schritte entweder in einer Plugin-Datei oder in Ihrer functions.php-Datei Ihres Themes ausführen.

add_action( 'wsl_hook_process_login_before_wp_set_auth_cookie', function( $user_id, $provider, $hybridauth_user_profile ){
    // $user_id is the ID of the WP User Object or in other words the users ID on your site.
    // $provider is the provider in which you are working with
    // $hybridauth_user_profile is a instance of the social media profile information: IE: $hybridauth_user_profile->email. This variable stores all profile information for the adapter, such as facebook.
    if( 'Facebook' != $provider ){
        return;
    }

    include_once( WORDPRESS_SOCIAL_LOGIN_ABS_PATH . '/hybridauth/Hybrid/Auth.php' );

    try
    {
        $provider = Hybrid_Auth::getAdapter( 'Facebook' ); 

        # https://developers.facebook.com/docs/graph-api/reference/v2.2/user/feed
        $response = $provider->api()->post( 'https://graph.facebook.com/v2.0/me/feed', array(
            'message' => 'This is a test message',
        ));
    }
    catch( Exception $e )
    {
        // Do some logging or something, in this example we echo the error.
        echo "Ooophs, we got an error: " . $e->getMessage();
    }
}, 10, 3 );

Hinweis: Ich verwende PHP 5, um die Funktion einzurichten. Wenn Sie PHP 5 nicht haben oder dieser bestimmte Code einen Fehler zurückgibt, versuchen Sie, den Funktionsteil zu entfernen und ihn zu einer dedizierten Funktion zu machen Ersetzen Sie den Funktionsteil durch eine Zeichenfolge mit dem dedizierten Funktionsnamen add_action ('hook', 'function', 10, 3) vs add_action ('hook', function () {}, 10, 3)

In diesem Beispiel wird "Dies ist eine Testnachricht" an das Benutzerprofil gesendet, dessen Status mit dem Namen Ihrer Apps gekennzeichnet ist.

Mehr finden Sie hier.

http://miled.github.io/wordpress-social-login/developer-api-apis.html

Dies ist ein ziemlich alter Beitrag, aber diese Informationen können vielen Menschen helfen, die hier landen.

Denken Sie daran, dass Sie die Erlaubnis des Benutzers benötigen, um Beiträge zu verfassen oder einen Fehlercode von FB oder einem anderen Anbieter zu erhalten. Sie können nicht einfach ohne Erlaubnis posten, Sie können Bereiche festlegen, indem Sie genau das Gegenteil von:

function wsl_lower_default_permissons( $provider_scope, $provider ){
    if( 'facebook' == strtolower( $provider ) ){
        $provider_scope = 'email'; // should not be empty or it will be overwritten
    }

    if( 'google' == strtolower( $provider ) ){
        $provider_scope = 'profile'; // should not be empty or it will be overwritten
    }

    return $provider_scope;
}

add_filter( 'wsl_hook_alter_provider_scope', 'wsl_lower_default_permissons', 10, 2 );

Anstatt den Geltungsbereich auf einen Geltungsbereich zu reduzieren, würden Sie:

$provider_scope .= ', scope1, scope2, scope3'
return $provider_scope;

Dieser Bereich wird jedes Mal verwendet, wenn sich ein Benutzer beim sozialen Netzwerk anmeldet. Wenn Sie also keine Berechtigung haben und den Bereich ändern, nachdem sich ein Benutzer angemeldet hat, muss er sich abmelden und wieder anmelden, um Ihnen die Berechtigung zu erteilen.

Sie können alle Benutzer zum Abmelden zwingen, indem Sie das Salt in der Datei wp-config.php ändern. Dies kann jedoch eine bewährte Methode sein oder nicht. Ich glaube, mit WordPress 4.1 haben Sie eine Funktion, machen Sie einfach eine kleine Google-Suche, um herauszufinden, wie Sie alle beim nächsten Laden der Seite verbessern können.

Ich kann nicht absolut sicher sein, und ich habe es nicht getestet, aber Sie würden so etwas tun, wenn Sie auf anderen Aktionen, die auf der Website aufgerufen werden, posten möchten.

add_action( 'wp_insert_comment', function( $id, $comment ){

    include_once( WORDPRESS_SOCIAL_LOGIN_ABS_PATH . '/hybridauth/Hybrid/Auth.php' );

    try
    {
        $provider = Hybrid_Auth::getAdapter( 'Facebook' ); 

        # https://developers.facebook.com/docs/graph-api/reference/v2.2/user/feed
        $response = $provider->api()->post( 'https://graph.facebook.com/v2.0/me/feed', array(
            'message' => "I just posted on this cool website, heres what i said:\r\n" . $comment->comment_content,
        ));
    }
    catch( Exception $e )
    {
        // Do some logging or something, in this example we echo the error.
        echo "Ooophs, we got an error: " . $e->getMessage();
    }
}, 10, 2 );

Dieser bestimmte Code würde den Facebook-Adapter laden und mit gegebener Erlaubnis auf der Facebook-Pinnwand posten. Sie könnten alles daran setzen, 5-Sterne-Bewertungen vorzunehmen und die Bewertung im Statusbeitrag mit get_comment_meta ($ id, 'rating', true) anzuzeigen. ;

Denken Sie auch daran, nur weil Sie um die Erlaubnis gebeten haben, Status auf ihrer Pinnwand zu veröffentlichen, bedeutet dies nicht, dass sie es Ihnen geben müssen. Dies ist der Zweck des Versuchsfangs. Sie wissen nie, wann Sie die Erlaubnis zum Posten haben oder nicht. Wenn sie die Erlaubnis verweigern, wird es immer mit $ e-> getMessage () abgefangen. Versuchen Sie es mit einem Protokollierungssystem oder geben Sie einfach null zurück, wenn Sie sich nicht darum kümmern, Fehler abzufangen.

Hoffe das hilft.

2
David Lawrence