更新我的个人电子邮件地址似乎多年未被使用。 Facebook将其标记为非活动状态,并且未将其作为JSON的一部分返回。
我使用此网址在客户端使用Facebook对用户进行身份验证:
https://www.facebook.com/dialog/oauth?
client_id=xxx&
redirect_uri=https://www.facebook.com/connect/login_success.html&
scope=email
我收到一个代码然后交换代币:
https://graph.facebook.com/oauth/access_token?
code=xxx&
client_id=xxx&
client_secret=xxx&
redirect_uri=xxx
然后我将令牌发送到我的服务器并获取Fb Graph以获取一些用户信息,包括电子邮件。
https://graph.facebook.com/me?access_token=xxx
出于某种原因,我向所有用户提供'关于'信息,但不是他/她的电子邮件!
我做错了什么?
答案 0 :(得分:5)
默认情况下,并非您返回节点或边缘中的所有字段 进行查询。您可以选择要返回的字段(或边) 使用"字段"查询参数。这对制作非常有用 您的API调用更加高效和快速。
这在v2.4中有效,(以前的版本检索了一些默认字段)。
当您注册新应用时,您有权自动(无需人工审核)三种权限:email,public_profile和user_friends。在您的代码"电子邮件"在范围内(这是好的)所以只需将您的查询更改为:
https://www.facebook.com/dialog/oauth?
client_id=xxx&
redirect_uri=https://www.facebook.com/connect/login_success.html&
scope=email,public_profile
您可能想要在以前版本的API中自动获得的public_profile字段。这样做,添加" public_profile"到你的范围:
https://graph.facebook.com/me?access_token=xxx&fields=first_name,last_name,gender,email,timezone,age_range,verified
现在将用户名字段添加到您的查询中:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".UserDetail" >
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" >
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp" >
<ImageView
android:id="@+id/imageView_list"
android:layout_width="match_parent"
android:layout_height="275dp"
app:layout_collapseMode="parallax"
android:fitsSystemWindows="true"
android:scaleType="fitXY"
android:src="@drawable/default_profile" />
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.NestedScrollView
android:id="@+id/scroll"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:clipToPadding="false" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TableLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_margin="15dp"
android:shrinkColumns="1"
android:stretchColumns="*" >
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp" >
</TableRow>
<TableRow
android:id="@+id/tableRow2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp" >
<TextView
android:id="@+id/CurrentAddress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Current Address:"
android:textColor="#000000"
android:textSize="15sp"
android:textStyle="bold" />
<TextView
android:id="@+id/txt_CurrentAddress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textMultiLine"
android:text="Current Address"
android:textColor="#000000"
android:textSize="15sp"
android:textStyle="normal" />
</TableRow>
<TableRow
android:id="@+id/tableRow3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp" >
<TextView
android:id="@+id/PermanentAddress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Permanent Address:"
android:textColor="#000000"
android:textSize="15sp"
android:textStyle="bold" />
<TextView
android:id="@+id/txt_PermanentAddress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textMultiLine"
android:text="Permanent Address"
android:textColor="#000000"
android:textSize="15sp"
android:textStyle="normal" />
</TableRow>
<TableRow
android:id="@+id/tableRow4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp" >
<TextView
android:id="@+id/Email"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Email:"
android:textColor="#000000"
android:textSize="15sp"
android:textStyle="bold" />
<TextView
android:id="@+id/txt_Email"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Email Address"
android:textColor="#000000"
android:textSize="15sp"
android:textStyle="normal" />
</TableRow>
<TableRow
android:id="@+id/tableRow5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp" >
<TextView
android:id="@+id/PhoneNumber"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Phone Number:"
android:textColor="#000000"
android:textSize="15sp"
android:textStyle="bold" />
<TextView
android:id="@+id/txt_PhoneNumber"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Phone Number"
android:textColor="#000000"
android:textSize="15sp"
android:textStyle="normal" />
</TableRow>
<TableRow
android:id="@+id/tableRow6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp" >
<TextView
android:id="@+id/BirthDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Date of Birth:"
android:textColor="#000000"
android:textSize="15sp"
android:textStyle="bold" />
<TextView
android:id="@+id/txt_BirthDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="BirthDate"
android:textColor="#000000"
android:textSize="15sp"
android:textStyle="normal" />
</TableRow>
<TableRow
android:id="@+id/tableRow7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp" >
<TextView
android:id="@+id/Gender"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gender:"
android:textColor="#000000"
android:textSize="15sp"
android:textStyle="bold" />
<TextView
android:id="@+id/txt_Gender"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gender"
android:textColor="#000000"
android:textSize="15sp"
android:textStyle="normal" />
</TableRow>
<TableRow
android:id="@+id/tableRow8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp" >
<TextView
android:id="@+id/Education"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Education:"
android:textColor="#000000"
android:textSize="15sp"
android:textStyle="bold" />
<TextView
android:id="@+id/txt_Education"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Education"
android:textColor="#000000"
android:textSize="15sp"
android:textStyle="normal" />
</TableRow>
<TableRow
android:id="@+id/tableRow9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp" >
<TextView
android:id="@+id/Qualification"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Qualification:"
android:textColor="#000000"
android:textSize="15sp"
android:textStyle="bold" />
<TextView
android:id="@+id/txt_Qualification"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Qualification"
android:textColor="#000000"
android:textSize="15sp"
android:textStyle="normal" />
</TableRow>
<TableRow
android:id="@+id/tableRow10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp" >
<TextView
android:id="@+id/BloodGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="BloodGroup:"
android:textColor="#000000"
android:textSize="15sp"
android:textStyle="bold" />
<TextView
android:id="@+id/txt_BloodGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="BloodGroup"
android:textColor="#000000"
android:textSize="15sp"
android:textStyle="normal" />
</TableRow>
<TableRow
android:id="@+id/tableRow11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp" >
<TextView
android:id="@+id/MaritalStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="MaritalStatus:"
android:textColor="#000000"
android:textSize="15sp"
android:textStyle="bold" />
<TextView
android:id="@+id/txt_MaritalStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="MaritalStatus"
android:textColor="#000000"
android:textSize="15sp"
android:textStyle="normal" />
</TableRow>
</TableLayout>
<!-- <Button
android:id="@+id/addContact"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Add To Contact"
android:textStyle="bold"
android:visibility="invisible" /> -->
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_margin="16dp"
app:layout_anchor="@id/app_bar_layout"
app:layout_anchorGravity="bottom|right|end"
android:clickable="true"
android:src="@drawable/addtocontact"
style="@style/FabStyle"
/>
</android.support.design.widget.CoordinatorLayout>
祝你好运