相关疑难解决方法(0)

何时使用Facebook的新Android SDK 3.0请求权限?

随着Facebook的新Android SDK 3.0(几天前发布),身份验证过程发生了变化.

那么你如何申请阅读权限,例如"friends_hometown"?

以下代码是我试图这样做的 - 但我很确定这不是你应该这样做的方式:

版本1:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Session.openActiveSession(this, true, new Session.StatusCallback() { // start Facebook login
        @Override
        public void call(Session session, SessionState state, Exception exception) { // callback for session state changes
            if (session.isOpened()) {
                List<String> permissions = new ArrayList<String>();
                permissions.add("friends_hometown");
                session.requestNewReadPermissions(new Session.NewPermissionsRequest(FBImport.this, permissions));
                Request.executeGraphPathRequestAsync(session, "me/friends/?access_token="+session.getAccessToken()+"&fields=id,name,hometown", new Request.Callback() {
                    ...
                });
            }
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

版本2:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Session currentSession = Session.getActiveSession();
    if (currentSession == null || currentSession.getState().isClosed()) { …
Run Code Online (Sandbox Code Playgroud)

android facebook facebook-authentication facebook-android-sdk

37
推荐指数
3
解决办法
4万
查看次数

Facebook使用Android SDK 3.0登录导致ANR或根本不工作

为了在Android应用中将用户登录到Facebook,我正在尝试使用以下代码.用户登录后,应该获取他们所有朋友的位置.

不幸的是,此代码有时会导致ANR(如Google Play开发人员控制台中所报告的那样),有时它无法正常工作.如果我删除Facebook内的应用程序(撤销权限),则会在下次启动Android应用时再次显示权限对话框.但是,如果应用程序已具有权限,则会导致这些ANR或仅退出而不成功.

好像零件正在工作而零件错了,不是吗?以下代码是否是登录和获取数据的正确方法?

package com.my.application;

import java.util.Arrays;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONObject;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.preference.PreferenceManager;
import com.facebook.*;
import com.facebook.Session.OpenRequest;
import com.facebook.Session.StatusCallback;

public class FBLocations extends Activity {

    private Session.StatusCallback fbStatusCallback = new Session.StatusCallback() {
        @Override
        public void call(Session session, SessionState state, Exception exception) { // callback for session state changes
            if (state.isOpened()) {
                Request.executeGraphPathRequestAsync(session, "me/friends/?access_token="+session.getAccessToken()+"&fields=id,name,location&limit=500", new Request.Callback() {
                    @Override
                    public void onCompleted(Response response) {
                        if (response != null) {
                            // do …
Run Code Online (Sandbox Code Playgroud)

android facebook-android-sdk

10
推荐指数
1
解决办法
5368
查看次数