当我尝试在我的Android应用程序中实现Facebook Connect时,出现以下错误.
11-02 16:41:31.660:D/Facebook-authorize(13194):登录失败:invalid_key:Android密钥不匹配.您的密钥"8Ioc4p/jMXoU9Lezug4nzmZfFUg"与应用程序设置中指定的允许密钥不匹配.在http://www.facebook.com/developers上查看您的应用程序设置
我重置Facebook应用程序中的密钥仍然显示相同的错误.我该如何解决?
我正在使用以下块构建应用程序:
Android - 客户端,Java Servlets - Sever Side,Facebook应用程序 - 用于验证用户和处理他们的数据.
我的问题如下:我想通过Facebook验证我的用户(例如从Android客户端使用facebook-android-sdk发送到facebook的请求),但后来我想向我的服务器发送请求(由servlets)并以某种方式验证发送请求的用户是否已通过Facebook和我的应用程序验证.
所以这些是步骤:
用户X使用facebook-android-sdk验证到Facebook和我的Facebook应用程序.X正在向我的服务器发送请求
至于服务器,我只想知道它是一个正在使用我的用户,我不需要服务器来执行任何Graph API请求.
我怎么知道X在我的服务器中有效?在这种情况下,身份验证是在客户端执行的.
我正在尝试使用新的SDK(3.0)从facebook获取我的朋友列表.我遇到了与我需要在Bundle中插入什么类型的params以及如何使用newMyFriendRequest和GraphAPI相关的问题.
我没有在facebook文档中找到关于我们必须使用哪种字段的地方.基于GraphExplorer,我在我的Bundle中插入了带有"id,name,friend"字符串的键"fields"作为值.下面的代码显示了我现在正在做的事情.在我得到我的照片和名字后,我执行newMyFriendRequest.我相信它默认使用GraphAPI.
我在StackOverflow上看过一些相关帖子:
Facebook Android SDK请求参数:在哪里查找文档?
它对我帮助很小,我不想使用FQL.对于响应II我收到这个JSON就像一个答案:
{Response: responseCode: 500, graphObject: null, error: {HttpStatus: 500, errorCode: 100, errorType: FacebookApiException, errorMessage: Unsupported operation}, isFromCache:false}
Run Code Online (Sandbox Code Playgroud)
请注意,我是Facebook SDK for Android的新手.
private void onSessionStateChange(final Session session, SessionState sessionState, Exception ex){
if(session != null && session.isOpened()){
getUserData(session);
}
}
private void getUserData(final Session session){
Request request = Request.newMeRequest(session,
new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
if(user != null && session == Session.getActiveSession()){
pictureView.setProfileId(user.getId());
userName.setText(user.getName());
getFriends();
}
if(response.getError() …Run Code Online (Sandbox Code Playgroud) 我在程序文件(x86)中安装了我的Android SDK.但由于某种原因,我想把它移到D:.我想问我是否可以在不改变我目前的日食项目的情况下做到这一点,我是否必须重新安装我的ADT插件?
提前致谢
我正在尝试将Facebook集成到我的Android应用程序中.使用Facebook登录按钮,我尝试登录.当我第一次安装应用程序时,它工作正常并成功登录.当我使用该按钮注销,然后再次尝试登录时,它会显示权限对话框,但SessionState返回状态已关闭.有什么建议?这是我的代码
public class LoginActivity extends FragmentActivity{
// private Login login;
private boolean isResumed = false;
private BirthDayComp app;
private int Login=0;
private int LogOut=1;
private int Count=LogOut+1;
private boolean loged= false;
private Fragment[] fragments = new Fragment[Count];
private UiLifecycleHelper uiHelper;
private Session.StatusCallback callback = new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
onSessionStateChange(session, state, exception);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login_fragment);
uiHelper = new UiLifecycleHelper(this, callback);
uiHelper.onCreate(savedInstanceState);
FragmentManager fm …Run Code Online (Sandbox Code Playgroud) android facebook facebook-graph-api facebook-android-sdk android-facebook
我通过Gradle在我的Android应用程序中集成了FB SDK,用于登录和跟踪事件.登录工作正常,但是一旦我尝试记录应用程序事件,logcat每15秒就会向我显示一个异常:
D/com.facebook.appevents.AppEventsLogger: Got unexpected exception: java.lang.ClassNotFoundException: com.facebook.a.b
Run Code Online (Sandbox Code Playgroud)
它会被PersistedEvents的readAndClearStore()方法抛出
这是我记录事件的代码:
AppEventsLogger logger = AppEventsLogger.newLogger(this);
Bundle parameters = new Bundle();
parameters.putString(AppEventsConstants.EVENT_PARAM_CURRENCY, "EUR");
parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT_TYPE, "product");
parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT_ID, id);
logger.logEvent(AppEventsConstants.EVENT_NAME_VIEWED_CONTENT,
1.99,
parameters);
Run Code Online (Sandbox Code Playgroud)
我的意思是com.facebook.a.b看起来像是一个问题.但是在FB SDK文档中,他们明确指出您不需要输入任何proguard规则来使其工作.当我不缩小我的应用程序时,如果我从github下载sdk并将其作为模块包含,此错误也会显示.
我正在开发一个Android应用程序,其中任何使用我们的应用程序登录Facebook的Android用户,我需要从Facebook提取他的照片,他的性别,他的全名.我正在使用Facebook SDK.
在Facebook SDK的帮助下,我可以登录Facebook,但我不知道如何从Facebook中提取他的照片,性别和全名?
以下是我用于登录Facebook的代码.我按照本教程
public class SessionLoginFragment extends Fragment {
private static final String URL_PREFIX_FRIENDS = "https://graph.facebook.com/me/friends?access_token=";
private TextView textInstructionsOrLink;
private Button buttonLoginLogout;
private Session.StatusCallback statusCallback = new SessionStatusCallback();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment, container, false);
buttonLoginLogout = (Button) view.findViewById(R.id.buttonLoginLogout);
textInstructionsOrLink = (TextView) view.findViewById(R.id.instructionsOrLink);
Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);
Session session = Session.getActiveSession();
if (session == null) {
if (savedInstanceState != null) {
session = Session.restoreSession(getActivity(), null, statusCallback,
savedInstanceState);
}
if (session == …Run Code Online (Sandbox Code Playgroud) 我正在开发一个与Facebook集成的Android应用程序.我想要:
从技术上讲,这将是:
email许可publish_stream许可我打电话Session.openActiveSession()给Session.StatusCallback(我已经检查过事先没有活动的打开会话):
final Session.StatusCallback sessionStatusCallback = new Session.StatusCallback() {
public void call(final Session session, SessionState state, Exception exception) {
// If there is an exception...
if(exception != null)
{
// Handle fail case here.
return;
}
// If session is just opened...
if(state == SessionState.OPENED)
{
// Handle success case here.
return;
}
};
};
// Start Facebook Login.
Session.openActiveSession(activity, true, sessionStatusCallback); …Run Code Online (Sandbox Code Playgroud) android facebook facebook-authentication facebook-android-sdk
当我在Facebook页面上分享时,收到以下错误:
(#100)只有URL的所有者才能指定图片,名称,缩略图或描述参数.
它在5-10天前工作正常.搜索时我在Facebook开发者网站链接上找到了以下内容:
"自2017年11月7日起,链接自定义可用,但链接必须由发布页面拥有,并且需要页面访问令牌.要验证所有权,请检查URL节点上的ownership_permissions {can_customize_link_posts}字段.请参阅我们的链接所有权有关详细信息的指南.对于版本2.10及更低版本,不推荐使用图片,名称,缩略图和说明.不建议使用所有版本的标题."
任何帮助,将不胜感激!
ShareLinkContent content = new ShareLinkContent.Builder()
.setContentUrl(Uri.parse(shareUrl))
.build();
new ShareApi(content).share(new FacebookCallback<Sharer.Result>() {
@Override
public void onSuccess(Sharer.Result result) {
shareCallback.onSuccess(result);
}
@Override
public void onCancel() {
shareCallback.onCancel();
}
@Override
public void onError(FacebookException error) {
shareCallback.onError(error);
}
});
Run Code Online (Sandbox Code Playgroud) android facebook-sharer facebook-android-sdk android-facebook
即使尚未使用任何SDK,Android Facebook SDK也始终graph.facebook.com在调用时发出网络请求FacebookSdk.sdkInitialize(context).
因此,如果我们在初始化它,Application.onCreate()那么总会有至少一个网络请求.即使设置如下:
<meta-data
android:name="com.facebook.sdk.AutoLogAppEventsEnabled"
android:value="false" />
Run Code Online (Sandbox Code Playgroud)
我们仔细研究了这一点,因为用户抱怨他没有使用Facebook登录(这就是我们首先拥有Facebook SDK的原因)并且仍有"用户数据"转移到Facebook.在GDPR和可疑用户时代,这是一种非常不利的行为!
我们现在正在做的是FacebookSdk.sdkInitialize(context)仅在用户想要使用Facebook登录时(在用户点击按钮时)进行呼叫.此外,我们删除了meta-data对android:name="com.facebook.sdk.ApplicationId"从AndroidManifest.这可以防止初始网络请求,但随后出现以下崩溃CurrentAccessTokenExpirationBroadcastReceiver:
java.lang.RuntimeException: Unable to start receiver com.facebook.CurrentAccessTokenExpirationBroadcastReceiver: The SDK has not been initialized, make sure to call FacebookSdk.sdkInitialize() first.
at com.facebook.internal.Validate.sdkInitialized(Validate.java:143)
at com.facebook.FacebookSdk.getApplicationContext(FacebookSdk.java:518)
at com.facebook.AccessTokenManager.getInstance(AccessTokenManager.java:86)
at com.facebook.CurrentAccessTokenExpirationBroadcastReceiver.onReceive(CurrentAccessTokenExpirationBroadcastReceiver.java:34)
Run Code Online (Sandbox Code Playgroud)
现在有几个问题:
Facebook为什么还在开始时提出请求?如果他们想要验证身份验证令牌,他们可以在真正使用SDK时立即执行此操作...
Facebook是否知道并容忍崩溃sdkInitialize()未被调用?因为我担心当它NullPointerException被删除时会有其他崩溃......
最重要的是:当没有使用其功能时,还有其他方法可以阻止来自Facebook SDK的网络请求吗?