Facebook deauthorize my app

前端 未结 6 678
暖寄归人
暖寄归人 2020-12-18 00:40

Can I use Facebook PHP SDK to deauthorize my app for a particular user, basically I like to have a toggle so the user can link or unlink their facebook account to my site, I

相关标签:
6条回答
  • 2020-12-18 01:13

    Using the graph API, this works fine:

    $ret = $this->Facebook->api('/me/permissions', 'DELETE');
    
    0 讨论(0)
  • 2020-12-18 01:15

    Not using the currently supported Graph API: as currently setup there is no interface in the Graph API (or even the legacy APIs) to deauthorize an application. The user has to explicitly choose to do it themselves through the Facebook settings pages.

    However...

    The legacy REST api has http://developers.facebook.com/docs/reference/rest/auth.revokeAuthorization/, which SOUNDS like it does what you want.

    Let me know if that works for you: I'm curious.

    0 讨论(0)
  • 2020-12-18 01:18

    If you go to Facebook Developer, then select your application, then under the "Advanced" menu there is a field called "Deauthorize Callback". Set this as a URL on your domain which is pinged when a user deauthorizes themselves, there is some documentation on the format of the data it requests here.

    0 讨论(0)
  • 2020-12-18 01:23

    Now Graph API has a way to do this: https://developers.facebook.com/docs/reference/api/user/#permissions

    Delete

    You can de-authorize an application entirely, or just revoke a specific permission on behalf of a user by issuing an HTTP DELETE to USER_ID/permissions or USER_ID/permissions/PERMISSION_NAME respectively. This request must be made with a valid user access_token or an app access token for the current app.

    0 讨论(0)
  • 2020-12-18 01:30

    Using the JS API an app can be deauthorized like this:

    FB.api('/me/permissions', 'DELETE', function(res){
        if(res === true){
            console.log('app deauthorized');
        }else if(res.error){
            console.error(res.error.type + ': ' + res.error.message);
        }else{
            console.log(res);
        }
    });
    

    Or delete a specific permission:

    FB.api('/me/permissions/user_birthday', 'DELETE', function(res){
        if(res === true){
            console.log('permission removed');
        }else if(res.error){
            console.error(res.error.type + ': ' + res.error.message);
        }else{
            console.log(res);
        }
    });
    
    0 讨论(0)
  • 2020-12-18 01:35

    Please note Facebook in the process of deprecating the REST API, and have adding equivalent support to the Graph API User object for "auth.revokeAuthorization" method.

    For delinking or deauthorization the user by making app call:

        $user_id = $this->facebook->getUser();
        $access_token=$this->facebook->getAccessToken();
        $result = $this->facebook->api(array(
                'method' => 'auth.revokeAuthorization',
                'uid' =>$user_id,
                'access_token'=>$access_token
        ));
    
    0 讨论(0)
提交回复
热议问题