Facebook帐户脱钩或取消授权Facebook应用程序,并检查从Facebook应用程序链接的状态

时间:2011-12-30 12:55:08

标签: facebook facebook-graph-api web facebook-fql facebook-php-sdk

我的网站应用程序具有Facebook登录功能登录。我的应用程序出现在Facebook上。登录facebook工作正常。

但是,应用程序具有将Facebook帐户链接和取消链接到Facebook应用程序的功能。

  • 如何检查FB帐户是否与特定的FB应用程序链接?
  • 如果链接(如该用户的请求),如何取消FB帐户与特定FB应用程序的链接?

(“链接”表示我们根据要求选择“允许”到FB应用程序)

6 个答案:

答案 0 :(得分:10)

使用新的Graph,有一种记录的取消授权方式(我已在Graph API资源管理器中对其进行了测试,但它确实有效)。使用有效的访问令牌向“me / permissions”发送HTTP删除命令。它不仅会使访问令牌无效,还会从用户的auth应用列表中删除该应用。这要求用户再次授权应用程序(通过权限屏幕)以使用它。快乐的编码!

答案 1 :(得分:2)

请注意Facebook在弃用REST API的过程中,并为“auth.revokeAuthorization”方法添加了对Graph API User对象的等效支持。

//$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
        ));

答案 2 :(得分:1)

这可以通过简单的FQL查询轻松实现:

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

如果他与app连接,则会返回用户的uid,否则

答案 3 :(得分:1)

使用App access token/{USER_ID}/permissions进行API通话,并显示该用户是否已授权您的应用

如果您有访问令牌,也可以检查用户的访问令牌。

响应类型将是这样的:

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

用户为您的应用授予的每个扩展权限都会有一个条目,而installed行意味着他们已经安装了您的应用

对于尚未安装应用的用户,响应将为:

 {
   "data": [  
   ]
 }

你也可以使用FQL作为Juicy Scripter在另一个答案中建议

答案 4 :(得分:1)

以下是使用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");
    }
}];

答案 5 :(得分:-2)

通过图谱API,来自the docs(感谢@DMCS):

  

您可以取消授权应用程序或撤消特定的扩展程序   代表用户发出HTTP DELETE请求的权限   具有该应用程序的用户access_token的PROFILE_ID /权限。

旧的REST API为您提供auth.revokeAuthorization。您可以在auth.revokeAuthorization docs上了解更多相关信息。

请注意,将来不会弃用REST API,尽管Facebook没有详细说明。

我不知道有任何方法可以获得给定用户所连接的应用程序列表,或者看到任何Facebook可以提供的应用程序。要查看用户是否已连接到您的应用,此处的其他答案应为您提供一些想法。