Articles of FacebookAndroidSDK

使用Facebook SDK 3 for Android的额外权限login

我遵循https://developers.facebook.com/docs/getting-started/facebook-sdk-for-android/3.0/ “使用Facebooklogin创build一个新的Android项目”一节。login过程没有问题。 因为我想使用原生的Androidbutton来login,所以我通过将下面的代码移动到原生Androidbutton的View.OnClickListener()中来稍微修改代码。 以下是监听器中的代码: Session.openActiveSession(MainActivity.this, true, new Session.StatusCallback() { // callback when session changes state @Override public void call(Session session,SessionState state, Exception exception) { if (session.isOpened()) { // make request to the /me API Request.executeMeRequestAsync(session,new Request.GraphUserCallback() { // callback after Graph API // response with user object @Override public void onCompleted(GraphUser user,Response response) { if […]

如何在facebook SDK Android中获取用户的Facebook个人资料图片

我用Facebook的3.6 SDK。 我想从graphics用户得到个人资料图片,上次我得到图像,但现在它返回空位图。 我用下面的代码 private void onSessionStateChange(Session session, SessionState state, Exception exception) { if (session.isOpened()) { Request.newMeRequest(session, new Request.GraphUserCallback() { @Override public void onCompleted(GraphUser user, Response response) { if (user != null) { try { URL imgUrl = new URL("http://graph.facebook.com/" + user.getId() + "/picture?type=large"); InputStream in = (InputStream) imgUrl.getContent(); Bitmap bitmap = BitmapFactory.decodeStream(in); //Bitmap bitmap […]

用于com.facebook.FacebookActivity的ClassNotFoundException

我想将Facebook的Android SDK(v4.11)整合到我的Android应用程序中,并且由于flex-sdk依赖关系,我的最终apk是通过Flash Builder编译的。 不幸的是,当我的应用程序试图创build初始化Facebook的相关Activity时,我在我的堆栈跟踪中得到了com.facebook.FacebookActivity的ClassNotFoundException 。 我已经在我的Android源代码和依赖项的Native Extension中包含了classes.jar。 使用来自Android SDK构build工具的dexdump,通过以下命令反编译最终.apk中的classes.dex文件: ./dexdump classes.dex | grep 'Class descriptor' 我能看到 Class descriptor : 'Lcom/facebook/FacebookActivity;' 这表明FacebookActivity.class已经打包并编译在.apk中。 我还将所有Facebook-sdk资源与我的项目资源一起捆绑在本地扩展的res文件夹中(这是我第一次必须在本地扩展中包含我自己的第三方资源)。 我初始化Facebook-SDK的onCreate()代码: FacebookSdk.sdkInitialize(getApplicationContext()); //throws the ClassNotFoundException AppEventsLogger.activateApp(this); 根据Facebook文档,我的AndroidManisfest.xml条目: <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/> <activity android:name="com.facebook.FacebookActivity" android:configChanges= "keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:label="@string/app_name" /> <activity android:name="com.facebook.CustomTabActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="@string/fb_login_protocol_scheme" /> […]

Facebook SDK 3.8:未返回权限publish_actions

我正在通过facebook( https://developers.facebook.com/docs/android/share )关注facebook的android分享教程。 该应用程序运行良好,我可以loginFacebook的点击演示共享button。 所以这是我的应用程序的过程: 用facebooklogin facebook会话对象被更新,以下权限被保存在会话对象中: user_likes, user_friends, user_status, basic_info 现在,我想分享一些东西。 因此用户点击一个共享button,并发出一个名为publish_actions的额外权限的请求 以下代码执行此请求: public class MainActivity extends Activity { private Button shareButton; private UiLifecycleHelper uiHelper; private static final List<String> PERMISSIONS = Arrays.asList("publish_actions"); private static final String PENDING_PUBLISH_KEY = "pendingPublishReauthorization"; private boolean pendingPublishReauthorization = false; … private void publishStory() { Session session = Session.getActiveSession(); if( […]

获取无效的android_key参数错误,首次loginFacebook Android SDK后

我已经从我的debugging存储使用哈希键 keytool -exportcert -alias androiddebugkey -keystore C:\ Users \ user.android \ debug.keystore | openssl sha1 -binary | openssl enc -a -e 并粘贴到Android的Facebook应用程序的密钥,并启用“Facebooklogin”选项。 当我第一次login到我的Android应用程序,它显示我一个权限对话框,并授予许可后,我可以让我从Facebook的细节。 但之后,当我退出和应用程序,再次打开并尝试login,它显示下面的屏幕。 我不明白,如果散列键是问题,那么为什么它在第一次尝试。 我正在使用Facebook的SDK旧版本不是新的3. +版本。

Android的Facebooklogin不能使用已安装的Facebook应用程序

我已经设置了简单的Facebooklogin。 对于Android 2.3.6一切正常,用户得到提示login对话框,input数据和应用程序继续。 我以为这是Android版本的错误,但事实上,当手机上安装了Facebook应用程序时,login不起作用! testing了这个:Galaxy Ace 2.3.6 HTC Desire 4.1.2 Galaxy Note 4.1.2 Android模拟器4.1.2 即使脸谱样本不工作! 每次执行应用程序 – else { Log.d("SESSION NOT OPENED", "SESSION NOT OPENED"); } else { Log.d("SESSION NOT OPENED", "SESSION NOT OPENED"); } 会议似乎没有打开,但为什么呢? 遵循本指南 – https://developers.facebook.com/docs/getting-started/facebook-sdk-for-android/3.0/ 码: Session.openActiveSession(this, true, new Session.StatusCallback() { @Override public void call(final Session session, SessionState state, Exception exception) […]

Facebook SDK中很less有内存泄漏

我试图为我的应用程序制作社交模块,比如包装器,它将包含Google +,Facebook和Twitter集成模板。 现在我正在使用Facebook SDK,并决定在我的应用程序中使用LeakCanary,成功login后我旋转了几次设备,并查看以下信息: 这里是MainActivity.class: public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); setFragment(); } private void setFragment(){ getSupportFragmentManager() .beginTransaction() .add(R.id.container, new MainFragment()) .commit(); } } 以下是我如何login到Facebook: public void configureFacebook(@NonNull Fragment fragment, @Nullable String permissions, @Nullable String requestFields) { setPermissionAndRequestFields(permissions, requestFields); loginManager = LoginManager.getInstance(); callbackManager = CallbackManager.Factory.create(); loginManager.registerCallback(callbackManager, […]

在Facebook SDK Android中如何注销

我对facebook.logout(上下文)的工作原理有些困惑。 因为即使在注销后,我也能够访问需要auth_token的信息。 那怎么可能呢? 我碰到这个话题,让我有点困惑: https : //stackoverflow.com/a/6597688/487940 读完这个答案之后,这是我的问题:所以如果用户授予访问[我的]应用程序,他将永远被authentication,如果他login到[官方] Facebook的应用程序? 即使我尝试在[my]应用程序中调用facebook.logout(context),他将会login,我的应用程序将能够调用Facebook API? 对不起,关于我无法理解这种行为。 更新:阅读Torid的响应之后,我对facebook.logout()函数感到困惑。 这个函数的目的是什么,如果它没有登出用户? 因为,我没有看到再次调用这个目的的目的。 它不会将用户登出。

Maven和Android Facebook SDK apklib

所以我正在将Maven的facebook-android-sdk包含在我们的CI过程中。 Facebook的/ pom.xml中: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.facebook.android</groupId> <artifactId>facebook-android-sdk</artifactId> <version>3.0.0-SNAPSHOT</version> <name>facebook-android-sdk</name> <packaging>apklib</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties> <dependencies> <dependency> <groupId>com.google.android</groupId> <artifactId>android</artifactId> <version>4.1.1.4</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.google.android</groupId> <artifactId>support-v4</artifactId> <version>r7</version> <type>jar</type> </dependency> </dependencies> <build> <finalName>${project.artifactId}</finalName> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <groupId>com.jayway.maven.plugins.android.generation2</groupId> <artifactId>android-maven-plugin</artifactId> <version>3.4.1</version> <configuration> <androidManifestFile>${project.basedir}/AndroidManifest.xml</androidManifestFile> <assetsDirectory>ignored</assetsDirectory> <resourceDirectory>${project.basedir}/res</resourceDirectory> <nativeLibrariesDirectory>ignored</nativeLibrariesDirectory> <sdk> <platform>16</platform> </sdk> </configuration> <extensions>true</extensions> </plugin> <plugin> […]

设置从Facebooklogin获取用户电子邮件ID的权限

我使用的是Android Facebook 3.0 SDK 。 我必须实现Facebooklogin。我正在访问用户的基本信息,如名称,用户ID。 但我想要访问用户的电子邮件。 我经历了许多博客和论坛,但无法弄清楚如何做到这一点。 我正在使用我自己的androidbuttonlogin,而不是com.facebook.widget.LoginButton 。 如果我使用Facebookloginbutton,很容易只需要使用这些行: authButton.setReadPermissions(Arrays.asList("basic_info","email")); 但是,我有我自己的要求,将不得不去与默认的Androidbutton。 这是我迄今为止所做的: Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest( this, Arrays.asList("email")); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mLogin = (Button) findViewById(R.id.logIn); mLogin.setOnClickListener(this); } @Override public void onClick(View v) { // start Facebook Login Session.openActiveSession(this, true, new Session.StatusCallback() { // callback when session changes […]