AccessToken 令牌:Facebook Android SDK 中的 ACCESS_TOKEN_REMOVED
Posted
技术标签:
【中文标题】AccessToken 令牌:Facebook Android SDK 中的 ACCESS_TOKEN_REMOVED【英文标题】:AccessToken token:ACCESS_TOKEN_REMOVED in Facebook Android SDK 【发布时间】:2013-08-19 06:23:37 【问题描述】:我正在使用 Facebook SDK,但我想创建相册,但我在会话中获得了 ACCESS_TOKEN_REMOVED。
在会话中得到这个
Session state:OPENED, token:AccessToken token:ACCESS_TOKEN_REMOVED permissions:[read_stream, manage_friendlists, read_mailbox, status_update, photo_upload, video_upload, sms, create_event, rsvp_event, email, xmpp_login, create_note, share_item, publish_stream, ads_management, read_insights, read_requests, manage_notifications, read_friendlists, manage_pages, publish_actions, user_birthday, user_religion_politics, user_relationships, user_relationship_details, user_hometown, user_location, user_likes, user_activities, user_interests, user_education_history, user_work_history, user_online_presence, user_website, user_groups, user_events, user_photos, user_videos, user_photo_video_tags, user_notes, user_checkins, user_about_me, user_status, basic_info], appId:458921577539675
代码。
/**
* Connect to facebook using Facebook SDK.
*/
public void connectToFacebook()
Session session = Session.getActiveSession();
if(session == null || session.isClosed())
Session.openActiveSession((Activity)context, true, new StatusCallback()
@Override
public void call(Session session, SessionState state, Exception exception)
if(session.isOpened() && state == SessionState.CREATED_TOKEN_LOADED)
Log.v(GlobalVars.TAG, "Token::" + session.getAccessToken());
Request.executeMeRequestAsync(session, new GraphUserCallback()
@Override
public void onCompleted(GraphUser user, Response response)
if(response != null)
Log.v(GlobalVars.TAG, "Response::" + response);
Log.v(GlobalVars.TAG, "Response::" + user.getFirstName() + ":::" + user.getLastName());
);
);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
【问题讨论】:
SDK 不会直接记录您的访问令牌,这就是您看到 ACCESS_TOKEN_REMOVED 的原因。您的请求是否有错误? @MingLi 我在执行call
方法时看到此错误。请帮助我为什么会这样?
你不需要检查“state == SessionState.CREATED_TOKEN_LOADED”,其实那是错误的检查。只需 session.isOpened() 就足够了。我之前的评论提到,出于安全目的,SDK 不会将您的访问令牌记录在 logcat 中,这就是您看到 ACCESS_TOKEN_REMOVED(而不是真正的访问令牌)的原因。
但是实现如何知道用户正在尝试将输出转发到 Logcat ?上面的断言没有意义。
session.getAccessToken()
【参考方案1】:
如果您只是在日志中看到ACCESS_TOKEN_REMOVED
,请确保您打印的是session.getAccessToken().getToken()
。在上面的例子中,替换
Log.v(GlobalVars.TAG, "Token::" + session.getAccessToken());
与
Log.v(GlobalVars.TAG, "Token::" + session.getAccessToken().getToken());
【讨论】:
这应该被标记为正确答案。 Facebook 不允许开发人员直接记录“session.getAccessToken”,因为这可能会导致泄漏。谁遇到同样的问题,也应该检查这个以获取更多信息:http://***.com/a/29544390/2754871【参考方案2】:我在过去 2 天面临的同样问题,最后我知道了这一点。 Facebook SDK 不会将访问令牌记录到 logcat(以避免通过日志泄漏用户令牌,如描述中所述)。
只需在 FacebookSdk.sdkInitialize() 之后添加这些行,我建议您仅在调试模式下执行此操作:
if (BuildConfig.DEBUG)
FacebookSdk.setIsDebugEnabled(true);
FacebookSdk.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);
【讨论】:
如果我在 Play Store 上发布应用,这是否可行? @ChiragSavsani 这肯定会起作用,因为它也适用于我的情况:) 好的。感谢您的帮助。 @RavinderBhandari 嘿,我在 android studio 中使用 facebook sdk 4+,我在登录结果中得到以下响应...... ..... AccessToken 令牌:ACCESS_TOKEN_REMOVED 我认为这就是 ans 的用途 :)【参考方案3】:您必须在 Firebase 控制台上启用 facebook 登录并添加 facebook 应用程序 ID 和应用程序密钥,它应该可以正常工作
【讨论】:
【参考方案4】:我也遇到了同样的问题:/
您可以查看:
-
appId 是否正确?
keyhash 是否在 facebook 应用中心注册?
应用名称空间/包名称是否与您的清单文件匹配? (在 Facebook 应用中心)
应用程序上线了吗?
如果一切正常,我真的不知道如何帮助你......
【讨论】:
【参考方案5】:我检查了费尔南多所说的所有项目并添加了它
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
我不知道最后一行是解决问题的原因还是随机的。
我正在为 Xamarin 使用 Facebook Android SDK 3.17
来自阿根廷的问候 埃尔南 www.hernanzaldivar.com
【讨论】:
以上是关于AccessToken 令牌:Facebook Android SDK 中的 ACCESS_TOKEN_REMOVED的主要内容,如果未能解决你的问题,请参考以下文章