İşte çalışmalarını yapmaya çalışıyorum akış aşağıdaki gibidir:Nasıl Facebook Fan Page açmak ve kullanıcı sevdim olmadığını kontrol etmek
- Aktivite açılır ve bir düğme gibi kullanıcıya düğmesi ve Facebook'un üzerinde
- Kullanıcı tıklama gösterilir Giriş Ekranı
- Kullanıcı oturum açma işlemlerini gösterir ve işleri :)
- Kullanıcı
- Kullanıcı Android'in geri düğmesine bastığında sayfayı sever ve Faaliyet gel Niyet veya WebView'da ... ya da başka bir şey aracılığıyla Fan Page (yöneliktir
- Etkinlik, kullanıcının gerçekten sayfayı beğenip beğenmediğini kontrol eder ve denetler. Eğer yapmış olsaydı, ona puan verilir. Kullanıcı Beğen düğmesini tıkladığında
Yani, bu çözüm için ben RestFB (http://restfb.com/) ve Facebook Android hem API v3.0
kullanıyorum, ben aşağıdakileri yapın: With
private Session.StatusCallback callback =
new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
//facebookClient is the RestFB object
facebookClient = new DefaultFacebookClient(session.getAccessToken());
Intent i = new Intent(MainActivity.this, FacebookWebViewActivity.class);
startActivity(i);
}
};
Bu kodu başarılı bir şekilde Facebook'a giriş yapabilirim (AUTH_CODE olsun) ve sonra Web Sayfamı çağırıyorum, bu da kullanıcıyı istediğim Fan Sayfasına yönlendirmeli. Bu WebView faaliyeti çok basittir ve basit yapın:
webView.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
Intent intent = new Intent(FacebookWebViewActivity.this, MainActivity.class);
startActivity(intent);
return true;
}
return false;
}
});
webView.loadUrl("https://www.facebook.com/<MyFanPage>");
WebView'da, benim MainActivity onu yönlendirmek gerekirken kullanıcı düğmeyi geri basarsa. Bu olay gerçekleştiğinde tetiklemek için etkinliğin onResume()
yöntemini beklemekteydim, ancak bir nedenden ötürü değil ... Beğenilenin olup olmadığını kontrol etmek için bu yönteme checkIfLikes(null)
kodunu koymaya niyetim var.
public void checkIfLikes(View v) {
final Session session = Session.getActiveSession();
AsyncTask.execute(new Runnable() {
public void run() {
try {
facebookClient = new DefaultFacebookClient(session.getAccessToken());
User user = facebookClient.fetchObject("me", User.class);
Page page = facebookClient.fetchObject("GeoWhere", Page.class);
String query = "SELECT uid FROM page_fan WHERE page_id=" + page.getId() + " and uid=" + user.getId();
List<FqlUser> users = facebookClient.executeFqlQuery(query, FqlUser.class);
} catch(com.restfb.exception.FacebookException ex) {
Log.e(TAG, "1" + ex.getMessage());
} catch(Exception e) {
Log.e(TAG, "2" + e.getMessage() + e.getStackTrace().toString());
}
}
});
}
kimse bana bunu başarmak yardımcı olabilir: kullanım aşağıdaki FQL kullanarak sayfayı sevdiysen Şimdiye kadar
, kontrol edebilirim?
Ve en önemlisi, Android için Facebook v3 API'sinde hiçbir yeri bulamıyorum, FanPage'i açmanın iyi bir yolu. WebView'i kullanmak zorunda mıyım? Ben ... Ben bu UX'i sevmiyorum ...
Teşekkür bir demet Felipe
DÜZENLEME 1 kullanıcı fan sayfası beğenebilmesi Uygulamamı ayrılmak zorunda sevmedim :
public static Intent getOpenFacebookIntent(Context context) {
try {
context.getPackageManager().getPackageInfo("com.facebook.katana", 0);
return new Intent(Intent.ACTION_VIEW, Uri.parse("fb://page/104585606418628"));
} catch (Exception e) {
Log.e(TAG, ""+e.getMessage());
return new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/GeoWhere"));
}
}
O iyi çalışıyor ve ben sayfasını beğenebilir: benim sayfasına gitmek için şimdi bu kodu yürütmesini. Geri düğmesine basıp Etkinliğime dönersek, onResume başlatılmaz. Aslında, tüm aktivite asılıyor. Düğmeler cevap vermiyor. Tekrar geri basıldığında, onResume çağrılır, ancak User canceled operation.
ile başarısız olur ve bu com.facebook.widget.LoginButton
adresinde gerçekleşir. Çok tuhaf. Tamir ettim gibi
DÜZENLEME 2
görünüyor. Facebook'un call() yönteminin içindeki startActivity() yöntemini çağırıyordu ve bu, call() yönteminin tamamen bitmemesini sağlıyordu. Yani oturumun durumu açık değildi. Yani ne yaptığını oldu:
public void call(Session session, SessionState state, Exception exception) {
facebookClient = new DefaultFacebookClient(session.getAccessToken());
//startActivity(getOpenFacebookIntent(MainActivity.this));
//launchFacebook();
//Intent i = new Intent(MainActivity.this, FacebookWebViewActivity.class);
//startActivity(i);
IS_SOCIAL = true;
}
Ve başka bir yerde ben kullanıcı Facebook'ta açmış olup olmadığını kontrol edin ve fan sayfası özen
ona gönderme işlemine devam kodunda !!