我的网站应用程序具有Facebook登录功能登录。我的应用程序出现在Facebook上。登录facebook工作正常。
但是,应用程序具有将Facebook帐户链接和取消链接到Facebook应用程序的功能。
(“链接”表示我们根据要求选择“允许”到FB应用程序)
答案 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可以提供的应用程序。要查看用户是否已连接到您的应用,此处的其他答案应为您提供一些想法。