Удалите учетную запись Facebook или деавторизуйте приложение Facebook и проверьте статус связывания из приложения Facebook - PullRequest
2 голосов
/ 30 декабря 2011

Приложение на моем веб-сайте, имеющее функцию входа в систему через Facebook. И для которого мое приложение присутствует на Facebook. Вход через фейсбук работает нормально.

Но приложение имеет функцию связывания и отмены привязки учетной записи Facebook к приложению Facebook.

  • Как проверить, связана ли учетная запись FB с конкретным приложением FB или нет?
  • А как отсоединить учетную запись FB от конкретного приложения FB, если оно связано (по запросу этого пользователя)?

(«Связано» означает, что мы выбираем «Разрешить» приложению FB по запросу)

Ответы [ 6 ]

10 голосов
/ 30 декабря 2011

С новым Graph есть документированный способ деавторизации (я протестировал его в Graph API Explorer, и он работает).Отправьте команду HTTP Delete в «me / permissions» с действительным токеном доступа.Он не только лишает законной силы токен доступа, но и удаляет приложение из списка аутентификационных приложений пользователя.Для этого пользователю необходимо снова авторизовать приложение (через экраны разрешений), чтобы использовать его.Удачного кодирования!

2 голосов
/ 03 января 2012

Обратите внимание, что Facebook находится в процессе устаревания API REST, и в него добавлена ​​эквивалентная поддержка для объекта User API Graph для метода "auth.revokeAuthorization".

//$this->facebook is facebook object
//$userid is of logged in user or can be written hardcoded.
For checking linked in or not by making api call.

        $user_id = $this->facebook->getUser();
        $result = $this->facebook->api(array(
                'method' => 'fql.query',
                'query' => "SELECT is_app_user FROM user WHERE uid=$user_id"
        ));
        $is_installed = $result[0]['is_app_user'];
        if($is_installed==1) {
            echo 'Linked';
        }
        else {
            echo 'Not Linked';
        }


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
        ));
1 голос
/ 26 июня 2015

Вот как деавторизовать ваше приложение с помощью Facebook iOS SDK v4:

#import <FBSDKCoreKit/FBSDKCoreKit.h>

...

NSString *graphPath = [NSString stringWithFormat:@"/%@/permissions", [FBSDKAccessToken currentAccessToken].userID];
[[[FBSDKGraphRequest alloc] initWithGraphPath:graphPath parameters:nil HTTPMethod:@"DELETE"]
    startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
    if ( !error ) {
        NSLog(@"Facebook unlinked");
    }
}];
1 голос
/ 30 декабря 2011

Сделайте вызов API для /{USER_ID}/permissions с вашим токеном доступа к приложению , и он покажет, авторизовал ли ваш пользователь ваше приложение

Вы также можете проверить с помощью токена доступа пользователя, если выиметь один.

Тип ответа будет примерно таким:

{
  "data": [
    {
      "installed": 1, 
      "bookmarked": 1
    }
  ] 
}

Там будет одна запись для каждого расширенного разрешения, предоставленного пользователем для вашего приложения, и строки installedозначает, что они установили ваше приложение

Для пользователя, который не установил ваше приложение, ответ будет таким:

 {
   "data": [  
   ]
 }

Вы также можете использовать FQL, как предлагает Juicy Scripter в другом ответе

1 голос
/ 30 декабря 2011

Этого легко достичь простым FQL-запросом:

SELECT uid FROM user WHERE uid = {USER_ID_HERE} AND is_app_user = true

Это вернет UID пользователя, если он связан с приложением и ничего другого

0 голосов
/ 30 декабря 2011

Через API Graph из документов (спасибо @DMCS):

Вы можете отменить авторизацию приложения или отозвать определенные расширенные разрешения от имени пользователявыполнив запрос HTTP DELETE для PROFILE_ID / permissions с пользователем access_token для этого приложения.

Старый REST API предлагает вам auth.revokeAuthorization.Подробнее об этом вы можете прочитать в документах auth.revokeAuthorization .

Имейте в виду, что API REST в будущем будет устаревшим, хотя Facebook не указывает, когда именно.

Мне неизвестен какой-либо способ получения списка приложений, к которому подключен данный пользователь, или я вижу причины, по которым Facebook сделал бы это доступным.Чтобы увидеть, подключен ли пользователь к вашему приложению, другие ответы здесь должны дать вам пару идей.

...